可以配置sqlcmd是否支持ANSI转义序列(用于着色PRINT输出)
问题描述:
我正在通过cmd shell中的sqlcmd运行.sql脚本,并希望脚本以彩色方式发出我的PRINT输出。可以配置sqlcmd是否支持ANSI转义序列(用于着色PRINT输出)
How to echo with different colors in the Windows command line演示Windows 10 CMD如何支持ANSI转义序列。
我猜测sqlcmd运行它自己的CMD壳,因为颜色不出现。
sqlcmd -S (LocalDB)\MSSQLLocalDB
> print 'NOTE: my message'
> go
NOTE: my message <--- Appears white on black.
在下一个打印有^ [。
^ [命令解释器如何呈现字面转义字符。
文字转义从键盘使用组合键ALT-027键盘
> print '^[92mNOTE: my message ^[0m'
> go
□92mNOTE: my message□0m <--- Would like this to appear bright green on black
的SQLCMD壳是不支持ANSI转义序列输入。转义字符输出为框(□)字形,而亮绿色的92m序列不会被解释。
可以将sqlcmd shell配置为支持ANSI转义序列吗?
我使用Windows 10,而SQLEXPRESS 2016年
>sqlcmd -?
Microsoft (R) SQL Server Command Line Tool
Version 11.0.2100.60 NT x64
Copyright (c) 2012 Microsoft. All rights reserved.
答
的仔细阅读[sqlcmd实用工具文档] [1]中的 “其他命令” 显示功能
- [:]! ! < command>执行操作系统命令。
所以ECHO命令可以用ANSI转义序列发出来获得着色
:!!ECHO <alt-027>[1;32mThis is bright green.<alt-027>[0m This is not.