从sh或bash脚本运行/调用windows批处理脚本

时间:2010-08-03 09:53:49

标签: bash batch-file cmd msysgit

我有一个sh / bash脚本需要调用带参数的批处理文件(参数是文件名,并以DOS / Windows格式给出)。

基本上我有: 的 script.sh

#!/bin/sh
declare var1=$1
declare var2=$2
dosomething var1 var2
...
<invoke batch script> var1 var2
...
dosomethingelse

我在GNU bash, version 3.1.0(3)-release (i686-pc-msys)

上使用msysgit作为shell

问题是当我从脚本运行时: $COMSPEC /c batchfile param1 param2 或者我得到一个看似bash的“空提示”,但是控制台上没有显示命令结果,cmd.exe启动,但不执行脚本。

我试过像这样引用这些参数:

$COMSPEC /c \"batchfile param1 param2\"
$COMSPEC /c \"\"batchfile param1 param2\"\"
$COMSPEC /c \"\"batchfile \"param1\" \"param2\"\"\"

但我没有得到任何结果。

1 个答案:

答案 0 :(得分:10)

似乎我需要从cmd param中逃离空间:

$COMSPEC \/c batch-file\ \"$var1\"\ \"$var2\"

$COMSPEC /c batch-file\ \"$var1\"\ \"$var2\"

我不确定/ from / c是否需要进行转义,但两种方式都可以正常转义。