可以配置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.