从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的值时,它看起来与在批处理文件中执行时有效的批处理命令相同。
答案 0 :(得分:2)
当您想使用像&gt;这样的shell功能时,您必须通过%comspec% /c
(或/ k进行调试)执行命令。如果这没有帮助,那么必须使命令的构建变得清醒。
<强> P.S。强>
WScript.Shell.Run/.Exec启动进程(不是shell);要获得shell功能(如重定向或内置),您必须启动shell - 例如cmd.exe - 让它运行你需要的程序。 %comspec%是指向shell的系统环境变量:
echo %comspec%
C:\WINDOWS\system32\cmd.exe