如何在命令行中使用cmd.exe将输出保存到文件?

0 cmd batch-file

我想跑,cmd.exe "D:a.bat"但没有得到任何东西.当我通过双击运行批处理文件时它可以工作.

批处理文件中的代码是:

echo teztttttt >> a.txt
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我理解为什么使用cmd.exe运行命令不会产生预期的结果.

dbe*_*ham 5

通常,您无需调用cmd.exe来执行批处理脚本.一个批处理脚本调用另一个批处理脚本的典型方法是使用call "D:a.bat" >> a.txt.

但我认为你有充分的理由通过cmd.exe运行你的脚本.

阅读文档(cmd /?从命令提示符),您将看到必须为命令添加前缀/C.

cmd.exe /c "D:a.bat"
Run Code Online (Sandbox Code Playgroud)

您所显示的代码不是问题,但如果您仔细阅读帮助,您会看到有一些有趣的业务与cmd.exe如何处理报价.

如果由于空格和/或毒性字符而必须引用脚本,并且后面的参数也带有引号,那么您可能无法获得所需内容,因为cmd.exe将删除第一个和最后一个引号.

例如:

cmd.exe /c "my script.bat" "this&that"
Run Code Online (Sandbox Code Playgroud)

将尝试(并且很可能失败)执行

my script.bat" "this&that
Run Code Online (Sandbox Code Playgroud)

哪里

  • my是第一个程序名称,script.bat" "this是第一个参数
  • & 是命令连接运算符(它没有引用或转义)
  • that 是第二个命令

通过将整个命令行包含在一组额外的转义引号中来解决此问题:

cmd.exe /c ^""my script.bat" "this&that"^"
Run Code Online (Sandbox Code Playgroud)

外部报价最初是转义的,因此&适当引用.然后,当cmd.exe剥离外引号时,将保留正确的命令字符串.