如何将批处理变量传递给VBScript文件?

时间:2014-05-08 16:22:17

标签: windows batch-file file-io vbscript switch-statement

我正在创建一个批处理文件,它接收来自用户的命令以及参数/参数,然后执行所需的操作。

目前我(基本上):

@echo off
set "commands=open archive decrypt encrypt"

set /p CASK=^>
echo %CASK%>TempUserCommand.txt
for /f "delims= " %%c in (TempUserCommand.txt) do set COMMAND=%%c
for /f "tokens=2" %%p in (TempUserCommand.txt) do set PARAM=%%p
del TempUserCommand.txt

for %%i in (%commands%) do (
    if "%%i"=="%COMMAND%" set C=%%i
)

if not "%C%"=="" (
    ::here is where I would like help
) else (
    echo That is not a recognised command.
)

我想要做的是,在if声明中(或其他地方,如果这是一个更好的地方),将变量%C%%PARAM%发送到一个.vbs文件,以便我可以在"SelectCase" statement(几乎是一个switch语句)中对其进行评估,以找出它是什么命令,然后执行一些操作(可能是编辑目录)。

我已经看过关于这个主题的一些问题,但我根本不理解它们,并且真的会提出一个简单,愚蠢和解释性的答案。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我认为您要做的是在从批处理脚本调用VBS文件时传递参数。

然后你可以像这样访问VBScript中的参数:

Select Case WScript.Arguments(0)
    Case "Yes"
        MsgBox "Argument is 'Yes'"
    Case "No"
        MsgBox "Argument is 'No'"
End Select

参数是零索引的,所以第一个参数是0(如上面的例子所示),第二个参数 - 如果你提供它 - 将是1,依此类推。

以下是您如何从批处理文件调用脚本并提供参数的示例:

CScript.exe "MyScript.vbs" "Yes"

注意,我认为这假定脚本与批处理脚本位于同一目录中。如果脚本位于另一个目录中,您始终可以提供脚本所在目录的完整路径。