尝试从 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:/
嗎?