【问题标题】:How to extract all zip files in a folder using winrar with the same name as the zip?如何使用与zip同名的winrar提取文件夹中的所有zip文件?
【发布时间】: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


【解决方案1】:

用Winrar.exe提取zip文件的语法是这样的:

[路径\winrar.exe] x [zip 文件的路径] [要解压的文件,.对所有人 files] [解压到的路径文件夹]

@echo off
set winrar=%ProgramFiles%\WinRAR\WinRAR.exe
CD /D %CD%\Setups
for /f "delims=" %%i in ('Dir /b *.zip') Do ("%Winrar%" x "%%~fi" "%%~dpni\")
pause

编辑于 28/06/2016 @ 13:35

如果您希望此开关-ibck 在后台运行 WinRAR,也可以添加:

@echo off
set winrar=%ProgramFiles%\WinRAR\WinRAR.exe
CD /D %CD%\Setups
for /r %%i in ("*.zip") Do ("%Winrar%" x -ibck "%%~fi" "%%~dpni\")
pause

【讨论】:

  • 当以您指定的方式使用时,for 循环会显示“找不到文件”。所以我使用了“for /r %%i in ("*.zip")”,它工作正常。我可以知道为什么您指定的 for 循环不起作用:(
  • @mayooran 我在发布给你之前测试了我的脚本,它对我来说就像一个魅力:) 只是我使用了set winrar=%ProgramFiles%\WinRAR\WinRAR.exe,这对你来说可能是不同的set winrar=%ProgramFiles (x86)%\WinRAR\WinRAR.exe
  • 不,实际上它来自 for 循环。我逐行删除以找到抛出该文件未找到错误的行。我会再检查一次。谢谢:)
  • @mayooran 检查我上次使用此开关在后台运行 WinRAR 的编辑-ibck
  • 现在可以正常工作了,谢谢 :) 你也能帮忙解决这个问题吗? stackoverflow.com/questions/38088275/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2020-07-10
相关资源
最近更新 更多