【发布时间】:2016-03-23 10:38:16
【问题描述】:
我有一小部分 Windows 批处理脚本,对于它找到的每个 zip 文件,它会将其解压缩到特定位置,然后将其删除。这很好用,但是我希望对其进行修改,因此当它找到一个 zip 文件时,它应该将其解压缩到其当前文件夹中名为“当前 .zip 名称 + 当前日期时间”的新文件夹中。但我似乎无法让它工作,它看起来像是将它提取到我指定要搜索的父文件夹而不是找到它的文件夹。
此要求的原因是 .zip 将存储在每次以构建命名的不同文件夹中,例如\server\g$\Dashboard\Results\NightlyBuild\25\ 所以我希望将 zip 解压缩到同一个文件夹中。
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%b-%%a)
for /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
for /R \\server\g$\Dashboard\Results\NightlyBuild\ %%f in (*.zip) do
"C:\Program Files (x86)\WinZip\WZUNZIP.EXE" -d %%f "%%~nf-%mydate%-%mytime%\"
if ERRORLEVEL 0 for /R \\server\g$\Dashboard\Results\NightlyBuild\ %%f in (*.zip) do del %%f
非常感谢任何帮助,谢谢!
【问题讨论】:
-
您想暂时从 delims 中删除
/。你想要tokens=2,3,因为描述性标签有一个冒号,所以标记1是The current time is。 -
谢谢@Noodles,有道理。现在只需要将它提取到当前位置
-
%%~dpf是包含 zip 的文件夹。见for /?。 -
哇,谢谢@Noodles!现在按计划工作:)
-
对于问题/答案中的代码,您可以添加 4 个前导空格,这样您就不必在代码行之间有中断,或者担心代码本身中存在反引号。
标签: windows batch-file winzip