【发布时间】:2016-07-27 01:16:11
【问题描述】:
这个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
【问题讨论】:
标签: batch-file vbscript hybrid