0

Windowsバッチファイルから次のコマンドを実行すると...

"e:\cdsdk\direct.exe" -f"e:\cdsdk\MyCred.txt" < "\\MyServer\ConfigFiles\MyParams.CDConfig" > "\\MyServer\MyLog.log"

MyParams.CDConfigで指定されたパラメーターを使用して、MyCred.txtファイルで指定された資格情報を使用してdirect.exeプログラムを正常に実行します。出力をファイルMyLog.logに記録します。

ただし、以下のVBスクリプトを実行すると、次のメッセージが表示されます。

次のエラーが発生しました。

While processing the command line, 'M' was encountered, but a '/' or a '-' was expected.

同じコマンドをVBScriptで機能させるには、何をする必要がありますか?

SET oFS = CreateObject("Scripting.FileSystemObject")
SET sout = oFS.GetStandardStream(1)
sout.WriteLine("Message to Console: Start")

Dim CDCmd 
Dim Quote 
Quote = CHR(34)
CredFile = "e:\cdsdk\MyCred.txt"
ConfigFile = "\\MyServer\ConfigFiles\MyParams.CDConfig"
CdLogFile = "\\MyServer\MyLog.log"

CDCmd = Quote & "e:\cdsdk\direct.exe" & Quote & " -f" & Quote & CredFile & Quote & " < " & Quote & ConfigFile & Quote & " > " & Quote & CdLogFile & Quote
sout.WriteLine("Message to Console: CDCmd=" & CDCmd)

Set objShell = WScript.CreateObject("WScript.Shell")
Dim ReturnValue
ReturnValue = -1
ReturnValue = objShell.Run (CDCmd, 3, true)
sout.WriteLine("Return Value=" & ReturnValue)

sout.WriteLine("Message to Console: End")

WScript.Quit ReturnValue

コンソールに書き込まれたCDCmdの値を比較すると、バッチファイルで実行されたときに機能するバッチコマンドと同じように見えます。

4

1 に答える 1

2

%comspec% /c> などのシェル機能を使用する場合は、コマンドを(またはデバッグの場合は /k)経由で実行する必要があります。それでも問題が解決しない場合は、コマンドの構築を正常にする必要があります。

PS

WScript.Shell.Run/.Exec はプロセス (シェルではない) を開始します。シェル機能 (リダイレクトや組み込みなど) を取得するには、シェル (cmd.exe など) を起動して、必要なプログラムを実行させる必要があります。%comspec% は、シェルを指すシステムの環境変数です。

echo %comspec%
C:\WINDOWS\system32\cmd.exe
于 2012-11-02T21:25:34.400 に答える