我试图从VBScript运行一些命令:
Dim objShell
Set objShell = WScript.CreateObject("WScript.shell")
objShell.Run "cmd /c C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win64_x64\scripts"
objshell.Run "lcm_cli.bat -lcmproperty C:\LCMBiar_Import.property"
WScript.Sleep 500
wshshell.SendKeys "{ENTER}"
但是我收到了这个错误
biarimport.vbs(4,1)(null):系统找不到指定的文件。
很明显,lcm_cli.bat
或LCMBiar_Import.property
文件不存在,但并非如此,如果我直接运行它就可以正常工作CMD。
答案 0 :(得分:1)
运行声明
objShell.run "cmd /c C:\some\folder"
不会将工作目录更改为该文件夹。它只会生成一个CMD实例,该实例会抛出一个错误,即命令C:\some\folder
无法识别,然后立即关闭(/c
)。
由于工作目录没有改变,后续的法规在错误的工作目录中运行,因此无法找到lcm_cli.bat
:
objshell.run "lcm_cli.bat -lcmproperty C:\LCMBiar_Import.property"
使用CurrentDirectory
属性更改工作目录:
objShell.CurrentDirectory "C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win64_x64\scripts"
objshell.Run "lcm_cli.bat -lcmproperty C:\LCMBiar_Import.property"
或以完整路径运行批处理脚本:
objShell.Run """C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\win64_x64\scripts\lcm_cli.bat"" -lcmproperty C:\LCMBiar_Import.property"
请注意,在Run
语句中使用时,任何包含空格的路径都必须放在嵌套的双引号中(bot不具有CurrentDirectory
属性)。此外,您不需要cmd /c
来启动批处理脚本。只有在使用CMD内置函数(如dir
或I / O重定向)时才需要它。