2013-04-02 252 views
1

我已經創建瞭解壓的所有文件批處理文件,刪除文件和文件夾,除了

@ECHO OFF 

SETLOCAL ENABLEDELAYEDEXPANSION 

REM 
REM Remove the double quotes from the front and end of the root path 
REM 
SET ROOT=%1 
SET ROOT=%ROOT:~1% 
SET ROOT=%ROOT:~0,-1% 
ECHO %ROOT% 

REM Searching directory structure from root for subfolders and zipfiles, 
REM then extracting the zipfiles into a subfolder of the same name as the zipfile. 

FOR /F "delims==" %%d IN ('dir /ogne /ad /b /s "%ROOT%"') DO (
ECHO Extracting : "%%d" 

FOR /F "delims==" %%f IN ('dir /b "%%d\*.zip"') DO (
     REM Getting filename without extension. 
     SET subfolder=%%~nf 
     ECHO mkdir "%%d\!subfolder!" 
    mkdir "%%d\!subfolder!" 
     REM Extracting zipfile content to the newly created folder. 
     ECHO 7z x "%%d\%%f" -o "%%d\!subfolder!" 
    "C:\Program Files\7-Zip\7z.exe" x "%%d\%%f" -o"%%d\!subfolder!" 
) 
) 

ENDLOCAL 

現在我想刪除已經創建的文件的批處理文件的zip文件。

任何人都可以幫助刪除單獨的解壓縮文件,而不是壓縮文件,也應該注意,它不應該刪除根目錄和zip文件。

任何其他解決方案,也讚賞。

我只想在文件夾中的zip文件。所有其他文件可以被刪除,而無需用戶說Y/N。

+0

'SET ROOT =%〜1'應該設置'ROOT'到未用引號引起(參數1) - 不論該參數是否實際上是引。 – Magoo

回答

0

嘗試此並刪除echo■如果輸出是行:

for /r "%root%" %%i in (*.zip) do (
    echo del /f /q "%%~dpni\*.*" 
    echo rd /q "%%~dpni" 
) 
+0

我建議''del行可能是多餘的,'rd/q'應該是'rd/s/q' – Magoo

+0

嗯,那裏**可能**是子文件夾中的ZIP,我不確定.. – Endoro

+0

我得到「完整路徑太長。」 其實我並不知道任何關於批處理文件寫作我只知道使用它,.. :)所以請幫助編寫完整的代碼,而不是片段:) –

相關問題