我使用VBScript通过CuteFTP自动下载文件。在VBScript的最后,我正在调用一个批处理文件,该文件将使用7zip的CLI来扩展zip文件。
批处理文件和7zip可执行文件存储在Server1(nt950id3)上。扩展发生在Server2(nt950a1)上。由于公司限制,这不能改变。由于VBS正在工作,我省略了它的代码。这是批处理命令 -
"\\nt950id3\c$\apps\CFI\7zip\7za.exe" e -y "\\nt950a1\filexfr$\Spectrum\File.zip" -o"\\nt950a1\filexfr$\Spectrum"
扩展是笨拙的,因为7zip将提取到批处理文件的CWD,而不是zip文件所在的目录,除非我指定-o
开关。
当我双击批处理文件或通过计划任务运行它时,它只能起作用。当VBScript调用批处理文件时,它无法声明不支持UNC路径 - 我不知道会有什么区别。 PUSHD
和POPD
应该解决此问题。
通过this post on CLI Crash Course的进一步研究使我在每个目录上使用PUSHD
并将它们设置为变量 -
SET UZEXE=PUSHD "\\nt950id3\c$\apps\CFI\7zip\7za.exe"
SET ZSRC=PUSHD "\\nt950a1\filexfr$\Spectrum\File.zip"
SET ZEDST=PUSHD "\\nt950a1\filexfr$\Spectrum"
在代码的底部,我使用“POPD”三次(也在每行的末尾尝试),尽管设置路径上有this very simple SO post,但我无法完成这项工作。我还尝试了PUSHD
-
SET UZEXE="\\nt950id3\c$\apps\CFI\7zip\7za.exe"
这也说明不支持UNC路径。
社区能否亲切地解释我的错误,并指出我如何使用多个独立的PUSHD
/ POPD
目录完成命令的运行?
答案 0 :(得分:0)
遵循Bill的指导,我只使用VBS - 没有批量调用 - 来解决我的问题。我不知道这是如此轻松可能,并将努力做更好的研究。工作代码 - 带有替代UNC路径 - 如下:
Set wshShell = CreateObject("wscript.shell")
wshShell.Run"""\\server1\path\7z.exe"" e -y ""\\server1\path\srcfile.zip"" -o\\server2\path\unzipdest", 0, True
首先,执行代码声明无法找到该文件。事实证明这是文件路径中的空白问题。使用this Google groups topic学习正确放置引号后,它现在可以在CuteFTP脚本中运行而没有错误。