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

Batch file 如何使用命令行中的cmd.exe将输出保存到文件中?,batch-file,cmd,Batch File,Cmd,我正在尝试运行cmd.exe“D:a.bat”,但没有得到任何结果。 当我双击批处理文件来运行它时,它会工作 批处理文件中的代码为: echo teztttttt >> a.txt 有人能帮我理解为什么使用cmd.exe运行命令没有产生预期的结果。通常不需要调用cmd.exe来执行批处理脚本。一个批处理脚本调用另一个批处理脚本的典型方式是使用call“D:a.bat”>>a.txt 但是我假设您有充分的理由通过cmd.exe运行脚本 阅读文档(cmd/?,在命令提示符下),您将看到

我正在尝试运行
cmd.exe“D:a.bat”
,但没有得到任何结果。 当我双击批处理文件来运行它时,它会工作

批处理文件中的代码为:

echo teztttttt >> a.txt

有人能帮我理解为什么使用cmd.exe运行命令没有产生预期的结果。

通常不需要调用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“”此
    是第一个参数
  • &
    是命令连接运算符(它不被引用或转义)
  • 这是第二个命令
通过将整个命令行括在一组额外的转义引号中,可以解决此问题:

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

外部引号最初被转义,因此
&
被正确地引用。然后,当cmd.exe去掉外部引号时,您将得到正确的命令字符串。

通常不需要调用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“”此
    是第一个参数
  • &
    是命令连接运算符(它不被引用或转义)
  • 这是第二个命令
通过将整个命令行括在一组额外的转义引号中,可以解决此问题:

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

外部引号最初被转义,因此
&
被正确地引用。然后,当cmd.exe去掉外部引号时,您将得到正确的命令字符串。

您会得到什么错误?还有什么是
D:a.bat
??你的意思是不是
D:\a.bat
??确实不需要将.bat文件作为cmd.exe的参数运行。会出现什么错误?还有什么是
D:a.bat
??你的意思是
D:\a.bat
?实际上不需要将.bat文件作为cmd.exe的参数运行。