2016-11-26 6 views
1

Ich versuche Parameter von VBScript an Batch übergeben.Wie übergeben Sie Variablen von VBScript an Batch?

Das ist mein VBScript:

Var1 = "foo" 
Var2 = "bar" 
Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "T.bat "& Var1 & Var2 

und dies ist meine Batch-Datei:

@echo off 
echo %1 
echo %2 
pause>nul 
+0

Schön, aber was schief geht? Einige Fehlermeldung (en)? Unerwartetes Verhalten? Bitte [bearbeiten] Sie Ihre Frage ... – JosefZ

+2

Sie benötigen ein Leerzeichen zwischen Parametern im Batch. –

Antwort

2

Sie ein Leerzeichen zwischen den beiden Argumenten müssen, da sonst die Batch-Datei nur ein einziges Argument sehen.

WshShell.Run "T.bat "& Var1 & Var2 

wird

WshShell.Run "T.bat foobar" 

Um die unbeabsichtigte Verkettung Änderung dies zu vermeiden:

WshShell.Run "T.bat "& Var1 & Var2 

in diese:

WshShell.Run "T.bat "& Var1 & " " & Var2 

oder (besser) diese:

WshShell.Run "T.bat """& Var1 & """ """ & Var2 & """" 

Die zusätzlichen doppelten Anführungszeichen dienen zum Behandeln von Leerzeichen in den Argumenten. Sie können machen, dass ein wenig mehr lesbar durch eine Angabe Funktion:

Function qq(str) 
    qq = """" & str & """" 
End Function 

WshShell.Run "T.bat "& qq(Var1) & " " & qq(Var2) 

Als Randnotiz: in Batch-Datei, die Sie %~1 und %~2 statt nur %1 und %2 verwenden möchten. Die Tilde entfernt äußere doppelte Anführungszeichen von Parametern.

+0

Danke exeactly wahta ich war forrrr gesperrt –

Verwandte Themen