2017-06-01 12 views
2

非表示モードでexeアプリケーションを実行するバッチファイル& vbsファイルがあります。 今、私はこのexeアプリケーションを開きたいですが、パラメータが渡されています。exeファイルをパラメータで開く方法

バッチファイル:

wscript.exe "C:\~some path~\invisible2.vbs" "C:\~some path~\Rserve_d.exe" 

invisible2.vbs

CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False 

上記のコードは、それが隠され実行されますを確認します。しかし、今、私はそれを起動するときRserve_d.exeに、このパラメータを渡す必要があります。

--RS-conf "E:\~some path~\Rconf.cfg" 

お知らせください。私は調整を試みましたが、構文には常に何か問題があるようです。

+0

あなたはinvisible2.vbs' 'に2番目のパラメータとしてそれを渡し、ちょうど' Wscript.argumentsを(追加しようとしたことがあり1) 'vbsのコードに? – Dave

答えて

2

ビルドスクリプトの引数からごコマンドの引数文字列は:私は彼がクレジットに値する必要がありました前

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

args = "" 
For i = 1 To WScript.Arguments.Count - 1 
    If InStr(WScript.Arguments(i), " ") > 0 Then 
    args = " " & qq(WScript.Arguments(i)) 
    Else 
    args = " " & WScript.Arguments(i) 
    End If 
Next 

CreateObject("Wscript.Shell").Run qq(WScript.Arguments(0)) & args, 0, False 
+0

ここで私たちが "" ""使用している理由を教えてください。この質問はあなたにはばかげて聞こえるかもしれませんが、本当にそれを手に入れることはできません。私は同様のコードを( "" "")を使用して、vbsファイル(引数を渡して表示)を実行しました。別のvbsファイルからは、cmdから実行されました。それは私のためにうまくいった。 – Gurman

+1

VBScriptの@Kira '" "'は空文字列です(二重引用符は文字列リテラルを定義します)。文字列リテラルの中に二重引用符を入れるには、ネストされた二重引用符をエスケープする必要があります。 VBScriptでは、これは文字を倍にすることによって行われます。したがって、 '' "" "'は単一の二重引用符の文字列リテラルです。代わりに 'Chr(34)'を使うことができます( 'Chr()'関数は与えられたASCII文字コードの文字を返しますが、34の場合は二重引用符です)。本質的に、関数 'qq()'は与えられた文字列を二重引用符で囲みます。 –

+0

ありがとうございます。これは私の混乱を排除 - 文字列リテラルの中に二重引用符を入れるためには、二重引用符をネストしてエスケープする必要があります。 VBScriptでは、これは文字を倍にすることによって行われます。 – Gurman

1

アンスガーWiechersは彼の答えを投稿しました。残念ながら、私は既に回答を投稿するよう努力しました。バッチスクリプトにいくつかの追加機能を提供するには、実行されたVBScriptの戻り値をチェックすることもできます。

バッチファイル:

setlocal 
set "script=c:\~some path~\invisible2.vbs" 
set "program=c:\~some path~\rserve_d.exe" 
set "params=--RS-conf "e:\~some path~\rconf.cfg"" 

cscript "%script%" //nologo "%program%" %params% 

:: %errorlevel% = 0 - VBScript was executed successfully 
:: %errorlevel% = 1 - Missing arguments 
:: %errorlevel% = 2 - Shell object creation failed 
:: %errorlevel% = 3 - Run method was unable to execute the program 

のVBScript:

Option Explicit 

On Error Resume Next 

Dim objShell,_ 
    strCmdLine,_ 
    intCount 

If (WScript.Arguments.Count < 1) Then 
    WScript.Quit(1) 
End If 

Set objShell = WScript.CreateObject("WScript.Shell") 

If (Err.Number <> 0) Then 
    WScript.Quit(2) 
End If 

For intCount = 1 To WScript.Arguments.Count - 1 
    strCmdLine = strCmdLine & " " & """" & WScript.Arguments.Item(intCount) & """" 
Next 

objShell.Run """" & WScript.Arguments.Item(0) & """" & strCmdLine, 0, False 

If (Err.Number <> 0) Then 
    WScript.Quit(3) 
End If 
関連する問題