我有一个脚本用于提取 .zip 文件夹的内容,但它不起作用(代码位于文章底部,供参考)。如果目标文件夹不存在,我会创建一个目标文件夹,然后使用 CopyHere 将内容移动到目标文件夹。脚本运行到创建文件夹的阶段,然后在 CopyHere 函数期间似乎停滞(zip 文件中没有任何内容被移动)。请注意,此时基于 Windows 的脚本宿主进程正在无限期运行,我必须手动终止它。
这似乎是我的计算机上特有的东西,因为该脚本在我的虚拟机以及其他同事的机器(所有 x64 Windows 10 Professional)中运行。
我在尝试提取到的位置拥有完全权限,因此我认为这不是权限问题。我能想到的机器之间的唯一区别是我安装了 Ubuntu-in-Windows 功能来试用。也许这导致了问题?
我还可以采取哪些步骤来查明该过程停滞的原因?
谢谢!
-肖恩
Function unzip(sZip)
Dim oFSO, oShell
dim zip, d
Set oFSO = CreateObject("Scripting.FileSystemObject")
sZipFile = oFSO.GetAbsolutePathName(sZip)
sDestPath = oFSO.GetAbsolutePathName(Left(sZip, Len(sZip) - 4))
If Not oFSO.FolderExists(sDestPath) Then
oFSO.CreateFolder(sDestPath)
End If
Set oShell = CreateObject("Shell.Application")
Set zip = oShell.NameSpace(sZipFile)
set d = oShell.NameSpace(sDestPath)
MsgBox "Got here"
d.CopyHere zip.items, 256
Set oFSO = Nothing
Set oShell = Nothing
End Function
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
sPath = oFSO.GetParentFolderName(WScript.ScriptFullName)
sInstPath = sPath & "\dist\installers\"
aInsts = Array("4-AgilentIOLib.zip", "5-NationalInstrumentsLib.zip")
For i = 0 To UBound(aInsts)
MsgBox "Unzipping " & sInstPath & aInsts(i)
unzip(sInstPath & aInsts(i))
MsgBox "Done"
Next
答案1
CopyHere
正在使用该256
选项,即Display a progress dialog box but do not show the file names.
来源
您是否可能收到了未看到的提示?您是否使用wscript.exe
或运行脚本cscript.exe
?您是否以交互方式运行脚本?
您能否尝试使用选项4
,不显示进度对话框?您也可以尝试16+256
添加Respond with "Yes to All" for any dialog box that is displayed.
我也运行了该脚本并且它运行良好,但是当我重新运行它时,系统提示我覆盖现有文件。