【发布时间】:2016-10-30 01:55:47
【问题描述】:
我需要迭代一个文件夹,并且对于每个 zip 文件,我需要用它的名称提取它。也就是说,如果它的 test.zip 那么它应该解压到 test 文件夹。同样,它应该遍历我的文件夹及其子文件夹并提取内容。我写了下面的代码,但它没有用 zip 的名称提取。请指教。
cd %CD%\Setups
for /r %%i in ("*.zip") do (
echo "%%~fi"
"C:\Program Files (x86)\WinRAR\WinRAR.exe" a -afzip "%%~dpi" "%%~fi"
echo came after unzipping
del /S /Q "%%~fi"
)
exit \b
【问题讨论】:
-
%~dpni代替%~dpi怎么样? -
%~dpni 正在寻找它应该提取到的当前位置。但是 ~%fi 没有给我应该在 zip 名称上创建的文件夹名称。也就是说,test.zip 文件没有被解压到 test 文件夹中。
-
%%~dpi指向.zip文件的容器,%%~ni是.zip文件的基本名称(例如test),所以%%~dpni指向要提取的文件夹;%%~fi指向.zip文件... -
这个任务可以在没有任何批处理代码的情况下完成,因为 WinRAR 为这种经常需要的提取类型提供了一个开关。请参阅How to unzip several *.zip archive files into separate folders? 上的答案 只需单击几下即可在 WinRAR GUI 中完成任务,或者通过执行单个命令行或通过 Windows 资源管理器中的上下文菜单在命令提示符窗口中完成任务。跨度>
标签: windows loops batch-file unzip winrar