我有一个 SQL 过程,它调用命令 shell 将 SQL 转储写入文件。以这个编辑后的文件为例:
VALUES(
@SomeVar
,1
)
该过程调用:
echo VALUES(>> C:\somefile.sql
echo @SomeVar>> C:\somefile.sql
echo ,1>> C:\somefile.sql
echo )>> C:\somefile.sql
除了 ,1
行之外,这工作正常。如果你在CMD中运行echo ,1>> C:\somefile.sql
,你会看到C:\somefile.sql只包含,
我的理论是 echo
认为它可以接受超过 1 个参数。
如果将命令修改为 echo ,1blah>> C:\somefile.sql
,则它可以正常工作。
我可以修改我的程序来检查该行是否包含 ,
后跟一个数字,而不是后跟任何内容,并在数字前面添加 ^
以对其进行转义。不过这有点痛苦。
此外,echo 1>> C:\somefile.sql
写入Echo is ON
有没有办法在 CMD 中回显
文字字符串?将字符串括在 ""
中会输出 "
标记。或者您还能想到其他解决方案吗?
最佳答案
问题是 1
是 standard output stream 的文件描述符。在批处理文件/CMD.EXE
中。您可以使用此行来解决此问题:
echo ,1 1>> C:\somefile.sql
或者,但更脆弱,只需在 1
和 >>
重定向之间放置一个空格
echo ,1 >> C:\Somefile.sql
更新:如果您确实担心上述示例的尾随空格,您也可以使用
>> C:\Somefile.sql echo ,1
即您也可以将重定向放在命令前面。就我个人而言,我认为这看起来有点尴尬,但是YMMV。
关于windows - 回显文字字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12262037/