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

时间:2016-12-20 18:52:34

标签: batch-file cmd

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

批处理文件中的代码是:

echo teztttttt >> a.txt

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

1 个答案:

答案 0 :(得分:5)

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

但我会假设您有充分的理由通过cmd.exe运行脚本。

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

cmd.exe /c "D:a.bat"

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

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

例如:

cmd.exe /c "my script.bat" "this&that"

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

my script.bat" "this&that

,其中

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

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

cmd.exe /c ^""my script.bat" "this&that"^"

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