2010-08-03 14 views
7

Ich habe eine sh/Bash-Skript, die eine Batch-Datei mit Parametern aufrufen müssen (Parameter sind Dateinamen und sind im DOS/Windows-Format angegeben).Run/invoke windows batch script von sh oder bash script

Im Grunde habe ich: script.sh

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

Ich GNU bash, version 3.1.0(3)-release (i686-pc-msys) als Shell verwenden, auf msysgit

Das Problem, das ist, wenn ich von Skript ausführen: $COMSPEC /c batchfile param1 param2 entweder Ich bekomme eine "leere Eingabeaufforderung", die wie Bash aussieht, aber kein Befehlsergebnis wird auf der Konsole angezeigt, entweder cmd.exe Start, führt aber das Skript nicht aus.

Ich habe die params versucht zu zitieren wie diese einzuschlagen:

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

Aber ich habe kein Ergebnis.

+0

Rufen Sie Windows-Batch-Skript von Unix-Skript oder umgekehrt? Ich war in der Lage, ein Batch-Skript von Shell-Skript mit – Raghuram

+0

aufrufen Ich rufe Windows Batch von Bash –

Antwort

10

Es scheint, dass ich den Raum von der cmd param zu entkommen benötigt:

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

oder

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

Ich bin nicht sicher, ob die/von/c werden entkommen muss, aber Es funktioniert gut beide Wege entkommen.

+0

Vielen Dank für die Dokumentation! Ich hatte sogar Probleme, die Option/c zu finden, ich brauchte nicht einmal Argumente, ich weiß nur, wie ich das Skript innerhalb von bash starten kann. Vielen Dank! –