2014-07-08 56 views
0

我需要從批處理文件運行7-Zip並執行一些任務,我想知道是否有可能。這是我的情況:7-Zip命令行幫助(批處理文件)

我有一個文件夾「X:/ Archived Backups /」,其中包含帶有存檔的存檔和子目錄。

其中一些檔案還包含更多檔案。

我需要遞歸掃描目錄和子目錄和7-Zip,以相同名稱(存檔名稱)將每個存檔提取到一個文件夾。

我還用得着檔案等

內檔案中提取檔案最後,我需要它提取時刪除檔案(包括檔案中的檔案),只留提取的文件夾。

這可能嗎?如果是這樣的話,可以從命令行中執行?我會怎麼做?

非常感謝 :)

+0

答案很大程度上取決於您使用的shell。哪一個? – jlahd

+0

@jlahd與x:作爲驅動器號,那麼它必須是Windows。 – foxidrive

+0

@foxidrive Windows是一個操作系統,而不是一個shell。我很希望提交者不僅限於'cmd.exe',不幸的是Windows的默認shell。 – jlahd

回答

1

測試此,看它是否做了你需要的東西 - 它應該提取出來到x:\extracted\path\filename文件夾。

它不會刪除檔案,因爲您必須首先進行測試。

首先檢查路徑7z.exe

@echo off 
set "location=x:\extracted" 
md "%location%" 2>nul 
for /r "X:\Archived Backups" %%a in (*.7z) do (
    md "%location%\%%~pna" 
     pushd "%location%\%%~pna" && ("c:\program files\7-zip\7z.exe" x "%%a" & popd) 
) 
pause 
+0

好的謝謝你!我從中解決了這個問題。 –

+0

至於刪除部分,我使用'del/S/F * .zip * .7z * .rar'等來刪除檔案。然後我刪除了所有空目錄中的'for/f'usebackq delims =「%% d in('」dir/ad/b/s | sort/R「')do rd」%% d「' –

+0

您是否也使用過'* .zip * .7z * .rar'在我的腳本中? – foxidrive

0

您可以使用this postthis爲出發點。

迭代和測試目錄:使用7-zip命令

FOR %%i IN (%VAR%) DO IF EXIST %%~si\NUL ECHO It's a directory 

對於文件,檢查文件的擴展名並提取:

+0

謝謝你的回覆。我得到它排序:) –