【问题标题】:Run/invoke windows batch script from sh or bash script从 sh 或 bash 脚本运行/调用 windows 批处理脚本
【发布时间】:2010-08-03 09:53:49
【问题描述】:

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

基本上我有: script.sh

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

我在msysgit上使用GNU bash, version 3.1.0(3)-release (i686-pc-msys)作为外壳

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

我尝试像这样引用参数来 bash:

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

但我没有得到任何结果。

【问题讨论】:

  • 你是从 Unix 脚本调用 windows 批处理脚本还是反之亦然?我能够使用从shell脚本调用批处理脚本
  • 我正在从 bash 调用 windows 批处理

标签: bash batch-file cmd msysgit


【解决方案1】:

看来我需要从 cmd 参数中转义空间:

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

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

我不确定 /c 中的 / 是否需要转义,但两种转义方式都可以正常工作。

【讨论】:

  • 感谢您的记录!即使找到 /c 选项我也遇到了麻烦,我什至不需要参数,只知道如何从 bash 中启动脚本。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-05-17
  • 2011-06-15
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
相关资源
最近更新 更多