使用相对路径通过vbs脚本参数从bat发送参数到bat

时间:2013-04-16 14:01:21

标签: parameters vbscript batch-file

运行lookatbat.bat时,收到错误消息,表示找不到文件(file1WithSpaces.txt)。我已尝试在此论坛中使用此修复程序,但即使使用此代码我也收到相同的错误。

这是一段lookatbat.bat,它使用相对路径调用VBScript。

cscript process.vbs /x:"Temp\file1WithSpaces.txt" /y:"Temp\file2WithSpaces.txt"

process.vbs调用bat文件(InprocessVbs.bat),该文件使用process.vbs的第一个参数。

process.vbs有很多说明,这里有一个有用的部分:

dim param1: param1=Wscript.Arguments.Named("x")
dim param2: param2=Wscript.Arguments.Named("y")
msgbox param1 
shell.run "InprocessVbs.bat """ & param1 & """ ""file.txt"""

msgbox param1弹出 Temp \ file1WithSpaces.txt ,但我认为param1无法正确检索到InprocessVbs.bat

感谢您的帮助!

InprocessVbs.bat

echo %2
echo %3
echo %4
Set arg1=%1
echo %arg1%
cscript anomyze.vbs %1>spec%1
more +2 %1|findstr /n /I /r /b /C:""^R.*=001>result.out

2 个答案:

答案 0 :(得分:0)

尝试以下代码

strCMD = "InprocessVbs.bat "&chr(34) & param1 & chr(34)&" file.txt"
shell.run strCMD

答案 1 :(得分:0)

该路径被认为是相对于当前工作目录的,因此请检查工作目录是什么(在VBScript和从中调用的批处理脚本),并验证该工作目录下面是否存在给定的相对路径。

检查VBScript中的工作目录:

WScript.Echo CreateObject("WScript.Shell").CurrentDirectory

批量检查工作目录:

echo %CD%

编辑:通常最好从参数中删除双引号,并根据需要将它们添加到脚本中。试试这个:

cscript anomyze.vbs "%~f1">"spec%~1"

您可以使用以下内容验证文件是否存在:

if exist "%~f1" (
  cscript anomyze.vbs "%~f1">"spec%~1"
) else (
  echo "%~f1" doesn't exist!
)

同时检查findstr正则表达式周围的双引号。在您的评论中,该部分看起来像这样:

/C:""^R.*=001

它应该是这样的:

/C:"^R.*=001"