2016-06-27 36 views
1

我需要遍历一个文件夹和每个我需要用它的名称解压缩的zip文件。也就是说,如果它的test.zip然后它应该提取到测试文件夹。同样,它应该遍历我的文件夹及其子文件夹并提取这些内容。我写了下面的代码,但它并没有用zip的名字来提取。请指教。如何使用与zip相同名称的winrar提取文件夹中的所有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 
+0

怎么样'%〜dpni'而不是'%〜dpi'? – aschipfl

+0

%〜dpni正在找到它应该提取的当前位置。但〜%fi不会给我应该在zip名称上创建的文件夹名称。也就是说,test.zip文件没有被提取到测试文件夹。 – mayooran

+0

'%%〜dpi'指向'.zip'文件的容器,'%%〜ni'是'.zip'文件的基名(例如'test'),所以'%%〜dpni '指向要提取的文件夹; '%%〜fi'指向'.zip'文件... – aschipfl

回答

1

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

[路径\的WinRAR.exe]×[路径到压缩文件] [文件来提取。所有 文件] [路径文件夹解压到]上28/06/2016

@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 

编辑@ 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 
+0

for循环在按照您指定的方式使用时显示“找不到文件”。所以我用“for/r %%我在(”* .zip“)中”,它工作正常。我可以知道为什么您指定的for循环不工作:( – mayooran

+0

@mayooran在我发布给你之前,我测试了我的脚本,它对我来说就像一个魅力:)只是我用'set winrar =%ProgramFiles%\ WinRAR \ WinRAR.exe'这可能是不同的你'设置winrar =%ProgramFiles(x86)%\ WinRAR \ WinRAR.exe' – Hackoo

+0

没有其实它是来自for循环。我一行一行地删除,以找到该文件未找到错误的行。我会再检查一次。谢谢:) – mayooran

相关问题