我想跑,cmd.exe "D:a.bat"但没有得到任何东西.当我通过双击运行批处理文件时它可以工作.
批处理文件中的代码是:
echo teztttttt >> a.txt
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么使用cmd.exe运行命令不会产生预期的结果.
通常,您无需调用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剥离外引号时,将保留正确的命令字符串.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |