2017-07-17 58 views
-2

我想編寫一個批處理腳本,將readme.txt文件添加到某些目錄,然後壓縮整個目錄。如何將自述文件添加到文件夾的每個子文件夾上以將它們壓縮爲RAR存檔文件?

例子:

@ECHO OFF 
for /D %%f in ("C:\directory_with_files_you_want_to_compress\ *") do copy "C:\directory_with_readme.txt\readme.txt" "%%f\" 
cd C:\directory_with_files_you_want_to_compress 
SET PATH=C:;C:\Program Files (x86)\WinRAR;C:\Windows\system32;C:\Windows;C:\Win dows\System32\Wbem;%PATH% 
FOR /f "delims=" %%d IN ('DIR /B') DO WinRAR a -m0 -ep -df -v100m -x*.rar "C:\where_you_want_to_save_new_rar_files\%%~nxd.ra r" "%%~fd" 
EXIT 

但它不添加readme.txt到RAR文件。

回答

0

這很容易實現,因爲控制檯版本Rar.exe以及GUI版本WinRAR.exe支持在命令行上指定的多個文件或目錄添加到相同的存檔文件中。

@echo off 
for /D %%D in ("C:\directory_with_files_you_want_to_compress\*") do "%ProgramFiles(x86)%\WinRAR\Rar.exe" a -cfg- -ep -idq -m0 -x*.rar -v100m "C:\where_you_want_to_save_new_rar_files\%%~nxD.rar" "%%~fD\" "C:\directory_with_readme.txt\readme.txt" && rd /Q /S "%%~fD" || echo/ && pause 

同上更易於閱讀:

@echo off 
for /D %%D in ("C:\directory_with_files_you_want_to_compress\*") do (
    "%ProgramFiles(x86)%\WinRAR\Rar.exe" a -cfg- -ep -idq -m0 -x*.rar -v100m -y "C:\where_you_want_to_save_new_rar_files\%%~nxD.rar" "%%~fD\" "C:\directory_with_readme.txt\Readme.txt" 
    if not errorlevel 1 (
     rd /Q /S "%%~fD" 
    ) else (
     echo/ 
     pause 
    ) 
) 

批處理代碼使用控制檯版本Rar.exe,而不是GUI版本WinRAR.exe,因爲完全沒有必要使用GUI版本用於此存檔文件創建任務。

開關-df通過的RAR刪除所有壓縮文件是因爲readme.txt刪除不應自動的RAR處理的第一個子目錄後刪除。該文件也必須添加到其他檔案文件以爲其他子目錄創建。相反,命令RD用於刪除已成功處理的子目錄。在創建的RAR存檔等錯誤已經存在並且被寫保護時,將輸出一條空行,並且echo/和處理將以pause停止。

交換機-idq被添加到運行Rar在安靜模式下,導致只輸出錯誤。

開關-m0-v100m導致只是存儲,而不是真正壓縮每個子目錄中的所有文件到每卷100 MB的多卷RAR存檔。因此,這個批處理文件顯然用於將已壓縮的存檔,音頻,圖像或視頻文件打包成多卷存檔。

交換機-y被添加到自動可能的提示是的

所有開關均記錄在文本文件Rar.txtWinRAR程序文件文件夾中。

%%~fD後添加一個反斜槓在有人的情況下,也不要使用此代碼與開關-ep1代替-ep,並添加開關-r遞歸歸檔的每個子目錄,而無需子目錄名稱添加到存檔了。使用的交換機僅存檔每個子目錄中的文件,但不存檔其子目錄,儘管在創建多卷RAR存檔後完全刪除了已處理的子目錄。

又見對問題的答案:

相關問題