批量使用变量& VBS混合动力车

时间:2016-07-27 01:16:11

标签: batch-file vbscript hybrid

thread概述了如何编写可能包含多种脚本语言组合的批处理混合编码,例如批处理,VBS,JScript,PowerShell等。问题是,批处理混合是否处理“外语”语言块作为“函数”,意味着对这些块的调用可能包括常规和延迟扩展批处理变量等参数,这些参数被引用为常见的参数,如%1,%2等?

下面的示例显示了在使用this文件解压缩代码时解压缩文件的方法,但它在Win10 64位中出错 - 为什么?注意,链接文件解压缩代码在Win 10中运行时也会给出error,但是不同的。

<!-- : Begin batch script
@echo off
set "dir=C:\Temp\" & set "file=%USERPROFILE%\Downloads\archive.zip\"
cscript //nologo "%~f0?.wsf" "%dir%" "%file%"
exit /b

----- Begin wsf script --->
<job><script language="VBScript">
 set fso = CreateObject("Scripting.FileSystemObject")
 If NOT fso.FolderExists(%1) Then
 fso.CreateFolder(%1)
 End If
 set objShell = CreateObject("Shell.Application")
 set FilesInZip = objShell.NameSpace(%2).items
 objShell.NameSpace(%1).CopyHere(FilesInZip)
 set fso = Nothing
 set objShell = Nothing
</script></job>

:: Error
..\test.bat?.wsf(9, 8) Microsoft VBScript compilation error: Invalid character

1 个答案:

答案 0 :(得分:1)

在vbscript中,第一个参数是:wscript.Arguments(0)

第二个参数是:wscript.Arguments(1)

所以,你应该这样写: `     

----- Begin wsf script --->
<job><script language="VBScript">
 set fso = CreateObject("Scripting.FileSystemObject")
 If NOT fso.FolderExists(wscript.Arguments(0)) Then
 fso.CreateFolder(wscript.Arguments(0))
 End If
 set objShell = CreateObject("Shell.Application")
 set FilesInZip = objShell.NameSpace(wscript.Arguments(1)).items
 objShell.NameSpace(wscript.Arguments(0)).CopyHere(FilesInZip)
 set fso = Nothing
 set objShell = Nothing
</script></job>