使用 Shell 执行 CMD 命令

使用 Shell 执行 CMD 命令

尝试从 shell 脚本执行 .bat 文件。此 .bat 文件调用另一个 .bat 文件。

第一个 bat 文件包含:

other_file.bat -c some_conf.xml

这意味着我不能这样做:

start dir/my_file

但我需要做:

cd dir
cmd /k $(cat my_file)

但是 my_file 中的命令没有执行。我试过了

cmd /k other_file.bat -c some_conf.xml

cmd /k "other_file.bat -c some_conf.xml"

这些都不起作用。但如果我这样做命令/k然后手动输入其他文件.bat -c 某些conf.xml, 有用...

答案1

该问题与Unix无关。

MINGW64 显然存在一个错误,导致它无法正确传递 cmd.exe 命令行。它试图耍花招,认为/K 必须是一条道路。

使用破折号或双斜杠:

cmd.exe //k other_file.bat -c some_conf.xml
cmd.exe -k other_file.bat -c some_conf.xml

你可能会问,我到底是怎么知道的?

如果你查看 MINGW64 生成的 cmd.exe 进程,命令行如下所示:

C:\WINDOWS\system32\cmd.exe K:/ other_file.bat -c some_conf.xml

看到了K:/嗎?

相关内容