windows - 回显文字字符串?

标签 windows command-line cmd command-prompt xp-cmdshell

我有一个 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 中回显文字字符串?将字符串括在 "" 中会输出 " 标记。或者您还能想到其他解决方案吗?

最佳答案

问题是 1standard 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/

相关文章:

windows - HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid 是唯一的吗?

c++ - 从命令行编译 Visual Studio 项目中的特定对象?

windows - CMD/Batch/Registry - 字符串替换没有按预期工作?

java - 如何使用java模拟真实的鼠标点击?

windows - PgAdmin4 无法查询或查看数据

windows - Autofac 与 MEF 集成

powershell - 通过 TeamCity 将带引号的参数传递给 PowerShell 脚本

command-line - Mercurial 命令行客户端,从文件中读取命令、选项和参数?

powershell - 在RUN参数下调试Docker容器构建失败

windows - 如何在 CMD/Batch 中将数字拆分为单个数字