2016-06-27 33 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

相關問題