Windows小技巧 -- 批處理文件實(shí)現(xiàn)目錄下文件批量打包壓縮

最近整理資料,發(fā)現(xiàn)很多 pdf 文檔,占用了不少的存儲(chǔ)空間,考慮使用 7-zip 進(jìn)行壓縮存儲(chǔ),由于文件比較多,且分散在不同目錄下,一個(gè)個(gè)文件壓縮比較繁瑣。為了提高效率且,方便后面取用,所有打算搗鼓個(gè)批處理文件,來(lái)實(shí)現(xiàn)命令行調(diào)用 7-zip 來(lái)對(duì)目錄下的每個(gè)文檔進(jìn)行單獨(dú)打包,并將打包后的壓縮包存到指定的目錄下,詳細(xì)內(nèi)容見(jiàn)下文。

本文在 Windows10 64位 操作系統(tǒng)下,使用的命令行提示符(cmd)版本為 10.0.17134.706, 7-zip64位 16.04 版本,使用下面腳本時(shí)請(qǐng)確保安裝了 7-zip ,可在此處下載最新版。


for 命令實(shí)現(xiàn)

以下展示幾種通過(guò) for 命令來(lái)遍歷打包壓縮批處理文件的示例:

@echo off
:: 切換當(dāng)前編碼方式為 UTF-8,處理命令行窗口標(biāo)題亂碼問(wèn)題
chcp 65001
title 批量壓縮當(dāng)前目錄下個(gè)文件到各自壓縮包
:: 切換回默認(rèn) GBK 編碼,處理命令行輸出亂碼問(wèn)題
chcp 936
echo ---------- START -------------

:: 實(shí)現(xiàn)一:遍歷當(dāng)前目錄下(不含子目錄)的pdf文件, 壓縮成與當(dāng)前文件同名的 7z 格式文件, 最后壓縮文件存放在當(dāng)前目錄下新建的 7z 文件夾(可自定義,特?fù)Q自己想要的文件夾名稱(chēng))下
:: for %%F in (*.pdf) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z ".\7z\%%~nF.7z" "%%F" )

:: 實(shí)現(xiàn)二:遍歷當(dāng)前目錄下(不含子目錄)的文件夾進(jìn)行壓縮, 壓縮成與當(dāng)前文件夾同名的 7z 格式文件 , 最后壓縮文件存放在目錄下新建的 7z 文件夾(可自定義,特?fù)Q自己想要的文件夾名稱(chēng))下(如想以目錄形式打包,可以參考此方式)
:: for /d %%F in (*) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z ".\7z\%%~nF.7z" "%%F" )

:: 實(shí)現(xiàn)三:遍歷當(dāng)前目錄下(含子目錄)的pdf文件進(jìn)行壓縮, 壓縮成與當(dāng)前文件同名的 7z 格式文件 , 最后壓縮文件存放在目錄下新建的 7z 文件夾(可自定義,特?fù)Q自己想要的文件夾名稱(chēng))下
:: for /r %%F in (*.pdf) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z ".\7z\%%~nF.7z" "%%F" )

:: 實(shí)現(xiàn)四:遍歷當(dāng)前目錄下(含子目錄)的pdf文件進(jìn)行壓縮, 壓縮成與當(dāng)前文件同名的 7z 格式文件 , 最后壓縮文件存放在與當(dāng)前文件同目錄下
:: for /r %%F in (*.pdf) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z "%%~dpnF.7z" "%%F" )

:: 實(shí)現(xiàn)五:遍歷當(dāng)前目錄下(含子目錄)的pdf文件進(jìn)行壓縮, 打包到 PDF.7z 壓縮包內(nèi) , 最后壓縮文件存放在當(dāng)前目錄下
::for /r %%F in (*.pdf) do (echo "%%~nF" && 7z a -t7z "PDF.7z" "%%F" )

echo ----------  END  -------------
pause

以上展示了幾種處理方式,更多方式自行擴(kuò)展,如:

  • 上述示例均已 .pdf 類(lèi)型為例,如果想壓縮其他類(lèi)型文件,可以更換 *.pdf 為對(duì)應(yīng)的 *.類(lèi)型 (如, *.doc ),其他通配符自行嘗試;
  • 如想將文件壓縮為 zip 格式,則替換命令中的 -t7z ".\7z\%%~nF.7z" 替換成 -tzip ".\7z\%%~nF.zip" ;
  • 如想改變壓縮算法或比例等,參考下文 7z 的相關(guān)命令,進(jìn)行嘗試;

使用方法

  1. 復(fù)制以上代碼內(nèi)容到新建的文本文檔內(nèi);(可以在此處下載腳本文件
  2. 確定要使用哪種實(shí)現(xiàn)來(lái)批量打包自己的文件,則刪除對(duì)應(yīng)實(shí)現(xiàn)下 for 命令前的雙英文冒號(hào)(::,此符號(hào)等效于 rem 命令,是批處理文件的注釋標(biāo)識(shí)符,雙英文冒號(hào)后面的內(nèi)容是注釋說(shuō)明,不會(huì)被當(dāng)做代碼執(zhí)行 ),并保存;
  3. 修改該新建文本文檔的擴(kuò)展名 .txt 改為 .bat,文件名自行定義;
  4. 將文件拷到要使用的目錄下,雙擊運(yùn)行(切記不要管理員模式運(yùn)行)。

使用上述代碼需要特別注意:

  • 當(dāng)前 for 命令實(shí)現(xiàn)版本,不要使用管理員方式運(yùn)行!不要使用管理員方式運(yùn)行!不要使用管理員方式運(yùn)行!重要的事情說(shuō)三遍!管理員方式運(yùn)行,會(huì)在 System32 目錄下生效(因管理員模式運(yùn)行時(shí),會(huì)調(diào)用 System32 目錄下的 cmd 命令提示符來(lái)執(zhí)行腳本) ,切記!
  • 代碼中的 C:\Program Files\7-Zip\7z.exe 是本人電腦上安裝的路徑,注意安裝了 7-zip ,并修改為自己電腦上的路徑,否則無(wú)法使用,如果將 7z 安裝路徑配置到環(huán)境變量 path 中,則可以將此處的路徑替換為 7z.exe(或 7z

批處理 for 命令說(shuō)明

for 命令可以對(duì)一組文件中的每個(gè)文件進(jìn)行指定的操作,命令語(yǔ)法如下:

FOR %variable IN (set) DO command [command-parameters]

cmd 命令行下使用命令 for /? 可以看到 for 相關(guān)的解釋說(shuō)明:

對(duì)一組文件中的每一個(gè)文件執(zhí)行某個(gè)特定命令。

FOR %variable IN (set) DO command [command-parameters]

  %variable  指定一個(gè)單一字母可替換的參數(shù)。
  (set)      指定一個(gè)或一組文件。可以使用通配符。
  command    指定對(duì)每個(gè)文件執(zhí)行的命令。
  command-parameters
             為特定命令指定參數(shù)或命令行開(kāi)關(guān)。

在批處理程序中使用 FOR 命令時(shí),指定變量請(qǐng)使用 %%variable 而不要用 %variable。變量名稱(chēng)是區(qū)分大小寫(xiě)的,所以 %i 不同于 %I.

如果啟用命令擴(kuò)展,則會(huì)支持下列 FOR 命令的其他格式:
    FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
    FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

        檢查以 [drive:]path 為根的目錄樹(shù),指向每個(gè)目錄中的 FOR 語(yǔ)句。
        如果在 /R 后沒(méi)有指定目錄規(guī)范,則使用當(dāng)前目錄。如果集僅為一個(gè)單點(diǎn)(.)字符,
        則枚舉該目錄樹(shù)。

    FOR /L %variable IN (start,step,end) DO command [command-parameters]

        該集表示以增量形式從開(kāi)始到結(jié)束的一個(gè)數(shù)字序列。因此,(1,1,5)將產(chǎn)生序列 1 2 3 4 5,(5,-1,1)將產(chǎn)生序列(5 4 3 2 1)

    FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
    FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

        或者,如果有 usebackq 選項(xiàng):

    FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
    FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
    FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

        fileset 為一個(gè)或多個(gè)文件名。繼續(xù)到 fileset 中的下一個(gè)文件之前,
        每份文件都被打開(kāi)、讀取并經(jīng)過(guò)處理。處理包括讀取文件,將其分成一行行的文字,
        然后將每行解析成零或更多的符號(hào)。然后用已找到的符號(hào)字符串變量值調(diào)用 For 循環(huán)。
        以默認(rèn)方式,/F 通過(guò)每個(gè)文件的每一行中分開(kāi)的第一個(gè)空白符號(hào)。跳過(guò)空白行。
        你可通過(guò)指定可選 "options" 參數(shù)替代默認(rèn)解析操作。這個(gè)帶引號(hào)的字符串包括一個(gè)
        或多個(gè)指定不同解析選項(xiàng)的關(guān)鍵字。這些關(guān)鍵字為:

            eol=c           - 指一個(gè)行注釋字符的結(jié)尾(就一個(gè))
            skip=n          - 指在文件開(kāi)始時(shí)忽略的行數(shù)。
            delims=xxx      - 指分隔符集。這個(gè)替換了空格和制表符的
                              默認(rèn)分隔符集。
            tokens=x,y,m-n  - 指每行的哪一個(gè)符號(hào)被傳遞到每個(gè)迭代
                              的 for 本身。這會(huì)導(dǎo)致額外變量名稱(chēng)的分配。m-n
                              格式為一個(gè)范圍。通過(guò) nth 符號(hào)指定 mth。如果
                              符號(hào)字符串中的最后一個(gè)字符星號(hào),
                              那么額外的變量將在最后一個(gè)符號(hào)解析之后
                              分配并接受行的保留文本。
            usebackq        - 指定新語(yǔ)法已在下類(lèi)情況中使用:
                              在作為命令執(zhí)行一個(gè)后引號(hào)的字符串并且一個(gè)單
                              引號(hào)字符為文字字符串命令并允許在 file-set
                              中使用雙引號(hào)擴(kuò)起文件名稱(chēng)。

某些范例可能有助:

    FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

        會(huì)分析 myfile.txt 中的每一行,忽略以分號(hào)打頭的那些行,將
        每行中的第二個(gè)和第三個(gè)符號(hào)傳遞給 for 函數(shù)體,用逗號(hào)和/或
        空格分隔符號(hào)。請(qǐng)注意,此 for 函數(shù)體的語(yǔ)句引用 %i 來(lái)
        獲得第二個(gè)符號(hào),引用 %j 來(lái)獲得第三個(gè)符號(hào),引用 %k
        來(lái)獲得第三個(gè)符號(hào)后的所有剩余符號(hào)。對(duì)于帶有空格的文件
        名,你需要用雙引號(hào)將文件名括起來(lái)。為了用這種方式來(lái)使
        用雙引號(hào),還需要使用 usebackq 選項(xiàng),否則,雙引號(hào)會(huì)
        被理解成是用作定義某個(gè)要分析的字符串的。

        %i 在 for 語(yǔ)句中顯式聲明,%j 和 %k 是通過(guò)
        tokens= 選項(xiàng)隱式聲明的??梢酝ㄟ^(guò) tokens= 一行
        指定最多 26 個(gè)符號(hào),只要不試圖聲明一個(gè)高于字母 "z" 或
        "Z" 的變量。請(qǐng)記住,F(xiàn)OR 變量是單一字母、分大小寫(xiě)和全局的變量;
        而且,不能同時(shí)使用超過(guò) 52 個(gè)。

        還可以在相鄰字符串上使用 FOR /F 分析邏輯,方法是,
            用單引號(hào)將括號(hào)之間的 file-set 括起來(lái)。這樣,該字符
        串會(huì)被當(dāng)作一個(gè)文件中的一個(gè)單一輸入行進(jìn)行解析。

最后,可以用 FOR /F 命令來(lái)分析命令的輸出。方法是,將
括號(hào)之間的 file-set 變成一個(gè)反括字符串。該字符串會(huì)
被當(dāng)作命令行,傳遞到一個(gè)子 CMD.EXE,其輸出會(huì)被捕獲到
內(nèi)存中,并被當(dāng)作文件分析。如以下例子所示:
      FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

        會(huì)枚舉當(dāng)前環(huán)境中的環(huán)境變量名稱(chēng)。


另外,F(xiàn)OR 變量參照的替換已被增強(qiáng)。你現(xiàn)在可以使用下列
選項(xiàng)語(yǔ)法:
     %~I          - 刪除任何引號(hào)("),擴(kuò)展 %I
     %~fI        - 將 %I 擴(kuò)展到一個(gè)完全合格的路徑名
     %~dI        - 僅將 %I 擴(kuò)展到一個(gè)驅(qū)動(dòng)器號(hào)
     %~pI        - 僅將 %I 擴(kuò)展到一個(gè)路徑
     %~nI        - 僅將 %I 擴(kuò)展到一個(gè)文件名
     %~xI        - 僅將 %I 擴(kuò)展到一個(gè)文件擴(kuò)展名
     %~sI        - 擴(kuò)展的路徑只含有短名
     %~aI        - 將 %I 擴(kuò)展到文件的文件屬性
     %~tI        - 將 %I 擴(kuò)展到文件的日期/時(shí)間
     %~zI        - 將 %I 擴(kuò)展到文件的大小
     %~$PATH:I   - 查找列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)展
                   到找到的第一個(gè)完全合格的名稱(chēng)。如果環(huán)境變量名
                   未被定義,或者沒(méi)有找到文件,此組合鍵會(huì)擴(kuò)展到
                   空字符串

可以組合修飾符來(lái)得到多重結(jié)果:

     %~dpI       - 僅將 %I 擴(kuò)展到一個(gè)驅(qū)動(dòng)器號(hào)和路徑
     %~nxI       - 僅將 %I 擴(kuò)展到一個(gè)文件名和擴(kuò)展名
     %~fsI       - 僅將 %I 擴(kuò)展到一個(gè)帶有短名的完整路徑名
     %~dp$PATH:I - 搜索列在路徑環(huán)境變量的目錄,并將 %I 擴(kuò)展
                   到找到的第一個(gè)驅(qū)動(dòng)器號(hào)和路徑。
     %~ftzaI     - 將 %I 擴(kuò)展到類(lèi)似輸出線路的 DIR

在以上例子中,%I 和 PATH 可用其他有效數(shù)值代替。%~ 語(yǔ)法
用一個(gè)有效的 FOR 變量名終止。選取類(lèi)似 %I 的大寫(xiě)變量名比較易讀,而且避免與不分大小寫(xiě)的組合鍵混淆。

微軟文檔說(shuō)明中語(yǔ)法如下

for {%%|%}<Variable> in (<Set>) do <Command> [<CommandLineOptions>]
參數(shù) 描述
{%%|%}<Variable> 必需。 表示可替換參數(shù)。在命令提示符執(zhí)行 for 命令時(shí)使用一個(gè)百分號(hào) ( % ), 在命令批處理文件中執(zhí)行 for 命令時(shí)使用雙百分號(hào) ( %% ) 。變量區(qū)分大小寫(xiě),且必須使用字母表示,如 %A, %B,或 %C。
(<Set>) 必需。 指定一個(gè)或多個(gè)文件,目錄或文本字符串,或運(yùn)行該命令的一系列值。 兩邊需要圓括號(hào)。
<Command> 必需。 指定要在每個(gè)文件、 目錄或文本字符串或上中包含的值的范圍縮小執(zhí)行的命令設(shè)置。
<CommandLineOptions> 指定你想要指定命令中使用任何命令行選項(xiàng)。
/? 在命令提示符下顯示幫助。

更多介紹及示例參看此處。


forfiles 命令實(shí)現(xiàn)

以下展示幾種通過(guò) forfiles 命令來(lái)遍歷打包壓縮批處理文件的示例:

@echo off
:: 切換當(dāng)前編碼方式為 UTF-8,處理命令行窗口標(biāo)題亂碼問(wèn)題
chcp 65001
title 批量壓縮當(dāng)前目錄下個(gè)文件到各自壓縮包
:: 切換回默認(rèn) GBK 編碼,處理命令行輸出亂碼問(wèn)題
chcp 936
echo ---------- START -------------

::實(shí)現(xiàn)一:遍歷當(dāng)前目錄下(含子目錄)的pdf文件進(jìn)行壓縮, 壓縮成與當(dāng)前文件同名的 7z 格式文件 , 最后壓縮文件存放在 7z 目錄下
:: Forfiles /P .\ /s /m *.pdf /c "cmd /c echo @FNAME && 7z a -t7z .\7z\@FNAME.7z @PATH"

::實(shí)現(xiàn)二:遍歷當(dāng)前目錄下(含子目錄)的pdf文件進(jìn)行壓縮, 壓縮成與當(dāng)前文件同名的 7z 格式文件 , 最后壓縮文件存放在與當(dāng)前文件同目錄下
:: Forfiles /P .\ /s /m *.pdf /c "cmd /c echo @FNAME && 7z a -t7z ./@FNAME.7z @PATH"

::實(shí)現(xiàn)三:遍歷當(dāng)前目錄下(不含子目錄)的pdf文件進(jìn)行壓縮, 壓縮成與當(dāng)前文件同名的 7z 格式文件 , 最后壓縮文件存放在 7z 目錄下
::Forfiles /P .\ /m *.pdf /c "cmd /c echo @FNAME && 7z a -t7z .\7z\@FNAME.7z @RELPATH"

::實(shí)現(xiàn)四:遍歷當(dāng)前目錄下(含子目錄)的pdf文件進(jìn)行壓縮, 打包到 PDF.7z 壓縮包內(nèi) , 最后壓縮文件存放在當(dāng)前目錄下
:: Forfiles /P .\ /s /m *.pdf /c "cmd /c echo @FNAME && 7z a -t7z .\PDF.7z @PATH"

echo ----------  END  -------------
pause

以上展示了幾種 forflies 命令的處理方法,更多擴(kuò)展使用,自行嘗試,使用方法類(lèi)似之前 for 命令實(shí)現(xiàn)的使用方法。可以在此處下載腳本文件。

使用上述代碼需要特別注意:

  • forfiles 命令,需要自己給定要處理的目錄路徑(如,代碼中的 D:\work 是我存放 pdf 等文件的目錄,替換成自己的目錄即可)

  • 給定目錄后,可以在任意位置執(zhí)行該腳本,且可以管理員方式運(yùn)行。

  • 7-zip 安裝路徑配置到環(huán)境變量 path 中,以方便在 forfilescmd 命令字符串中使用


批處理 forfiles 命令說(shuō)明

forfiles 命令可以對(duì)一組文件中的每個(gè)文件進(jìn)行指定的操作,命令語(yǔ)法如下:

FORFILES [/P pathname] [/M searchmask] [/S] 
         [/C command] [/D [+ | -] {yyyy/MM/dd | dd}]

cmd 命令行下使用命令 forfiles /? 可以看到 forfiles 相關(guān)的解釋說(shuō)明:

FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {yyyy/MM/dd | dd}]

描述:
    選擇一個(gè)文件(或一組文件)并在那個(gè)文件上
    執(zhí)行一個(gè)命令。這有助于批處理作業(yè)。

參數(shù)列表:
    /P    pathname      表示開(kāi)始搜索的路徑。默認(rèn)文件夾是當(dāng)前工作的
                        目錄 (.)。
    /M    searchmask    根據(jù)搜索掩碼搜索文件。默認(rèn)搜索掩碼是 '*'。
    /S                  指導(dǎo) forfiles 遞歸到子目錄。像 "DIR /S"。
    /C    command       表示為每個(gè)文件執(zhí)行的命令。命令字符串應(yīng)該
                        用雙引號(hào)括起來(lái)。
                        
                        默認(rèn)命令是 "cmd /c echo @file"。下列變量
                        可以用在命令字符串中:
                        
                        @file    - 返回文件名。
                        @fname   - 返回不帶擴(kuò)展名的文件名。
                        @ext     - 只返回文件的擴(kuò)展名。
                        @path    - 返回文件的完整路徑。
                        @relpath - 返回文件的相對(duì)路徑。
                        @isdir   - 如果文件類(lèi)型是目錄,返回 "TRUE";
                                   如果是文件,返回 "FALSE"。
                        @fsize   - 以字節(jié)為單位返回文件大小。
                        @fdate   - 返回文件上一次修改的日期。
                        @ftime   - 返回文件上一次修改的時(shí)間。

                        要在命令行包括特殊字符,字符請(qǐng)以 0xHH
                        形式使用十六進(jìn)制代碼(例如,0x09 為 tab)。
                        內(nèi)部 CMD.exe 命令前面應(yīng)以 "cmd /c" 開(kāi)始。

    /D    date          選擇文件,其上一次修改日期大于或等于 (+),
                        或者小于或等于 (-) 用 "yyyy/MM/dd" 格式指定的日期;

                        或選擇文件,其上一次修改日期大于或等于 (+)
                        當(dāng)前日期加 "dd" 天,或者小于或等于 (-) 當(dāng)前

                        日期減 "dd" 天。有效的 "dd" 天數(shù)可以是
                        0 - 32768 范圍內(nèi)的任何數(shù)字。如果沒(méi)有指定,

                        "+" 被當(dāng)作默認(rèn)符號(hào)。

    /?                  顯示此幫助消息。

示例:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 在 30 前就被更改。"
    FORFILES /D 2001/01/01
             /C "cmd /c echo @fname 在 2001年1月1日就是新的。"
    FORFILES /D +2019/6/14 /C "cmd /c echo @fname 今天是新的。"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

微軟文檔說(shuō)明中語(yǔ)法如下

forfiles [/p <Path>] [/m <SearchMask>] [/s] [/c "<Command>"] [/d [{+|-}][{<Date>|<Days>}]]
參數(shù) 描述
/p <Path> 指定開(kāi)始搜索的路徑。默認(rèn)情況下,搜索從當(dāng)前工作目錄開(kāi)始。
/m <SearchMask> 根據(jù)指定的搜索掩碼搜索文件。默認(rèn)搜索掩碼是 *.\ *
/s 指示forfiles命令以遞歸方式搜索子目錄。
在每個(gè)文件上運(yùn)行指定的命令。命令字符串包含在雙引號(hào)中。默認(rèn)命令是“cmd / c echo @file”。
/d [{+|-}]?[{<Date>|<Days>}] 選擇具有指定的時(shí)間范圍內(nèi)的上次修改日期的文件。
- 選擇文件的上次修改日期晚于或等于 ( + ) 或早于或等于 ( - ) 指定的日期,其中日期采用格式 MM/DD/YYYY。
- 選擇文件的上次修改日期晚于或等于 ( + ) 的當(dāng)前日期加上指定,天內(nèi)或早于或等于 ( - ) 的當(dāng)前日期減去天數(shù)指定。
有效值范圍 0-32,768 中包含任意數(shù)量。 如果指定沒(méi)有登錄,則 + 默認(rèn)情況下使用。
/? 在命令提示符下顯示幫助。

更多介紹及示例參看此處


關(guān)于 7-zip

7-Zip 是一款擁有極高壓縮比的開(kāi)源壓縮軟件。支持 Windows、Linux等平臺(tái)。通常使用 7-Zip.7z 格式能比使用 .zip 格式的壓縮檔案小 30-70%。并且使用 7-Zip 創(chuàng)建的 .zip 格式比大多數(shù)其它壓縮軟件創(chuàng)建的都小 2-10%。關(guān)于 7-zip 等更多內(nèi)容,可以參看官網(wǎng)說(shuō)明。

7-zip 安裝完成后,在安裝目錄下,可以找到當(dāng)前版本 7-zip.chm 幫助文檔,中文幫助文檔可以在此處下載 ,文檔下載后,打開(kāi)無(wú)內(nèi)容,可以嘗試在文檔屬性中勾選 解除鎖定 ,點(diǎn)擊應(yīng)用即可。

7-zip文檔解除鎖定

7-zip 命令行的語(yǔ)法格式大致如下:

7z <command> [<switch>...] <base_archive_name> [<arguments>...]

7z <命令行> [<選項(xiàng)>...] <基本檔案名稱(chēng)> [<參數(shù)變量>...]

關(guān)于 7-zip 命令行版本的更多內(nèi)容,在文檔中有較為詳細(xì)的介紹,并附有示例,可以自行學(xué)習(xí)嘗試。

7-zip 命令行版本用戶(hù)手冊(cè)

DEL 命令刪除文件

最后,附上遞歸刪除指定類(lèi)型文件批處理代碼(可以用來(lái)批量刪除打包的源文件)

特別注意:此刪除為完全刪除,回收站不可見(jiàn),且無(wú)法撤銷(xiāo)還原,請(qǐng)慎用!?。?/p>

:: 刪除目錄下(含子目錄下)符合條件的文件
@echo off
:: 不推薦使用此方法,管理員模式運(yùn)行時(shí)可能會(huì)誤刪 System32 目錄下文件,請(qǐng)慎用?。?!
::for /r %%F in (*.7z) do (DEL /p "%%F" )

:: 推薦使用此方法,支持管理員方式運(yùn)行(因提供了絕對(duì)路徑)
forfiles /P "D:\work" /s /m *.7z /c "cmd /c DEL /p @PATH"
pause

cmd 命令行下使用命令 DEL /? 可以看到 DEL 相關(guān)的解釋說(shuō)明:

刪除一個(gè)或數(shù)個(gè)文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         指定一個(gè)或多個(gè)文件或者目錄列表。
                通配符可用來(lái)刪除多個(gè)文件。
                如果指定了一個(gè)目錄,該目錄中的所
                有文件都會(huì)被刪除。

  /P            刪除每一個(gè)文件之前提示確認(rèn)。
  /F            強(qiáng)制刪除只讀文件。
  /S            刪除所有子目錄中的指定的文件。
  /Q            安靜模式。刪除全局通配符時(shí),不要求確認(rèn)
  /A            根據(jù)屬性選擇要?jiǎng)h除的文件
  屬性          R  只讀文件                     S  系統(tǒng)文件
                H  隱藏文件                     A  存檔文件
                I  無(wú)內(nèi)容索引文件               L  重分析點(diǎn)
                -  表示“否”的前綴

如果命令擴(kuò)展被啟用,DEL 和 ERASE 更改如下:

/S 開(kāi)關(guān)的顯示句法會(huì)顛倒,即只顯示已經(jīng)
刪除的文件,而不顯示找不到的文件。

建議: 使用刪除時(shí),DEL 命令后使用 /p 命令參數(shù),來(lái)手動(dòng)確認(rèn)刪除文件,防止誤刪!


參考閱讀

微軟文檔 - Windows Commands

Computer Hope - Microsoft DOS and Windows command line

7-zip 中文幫助文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • WinRAR - 最新版本的更新 版本 5.50 1. WinRAR 和命令行 RAR 默認(rèn)使用 RAR ...
    王舒璇閱讀 2,512評(píng)論 0 2
  • 為什么要整理一下Linux下的打包和壓縮工具呢?原因很簡(jiǎn)單,因?yàn)橛龅絾?wèn)題了:游戲服務(wù)器可執(zhí)行文件、配置和各種資源文...
    davidpp閱讀 10,184評(píng)論 0 18
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,983評(píng)論 0 11
  • 7z --help7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor ...
    WorldPeace_hp閱讀 21,563評(píng)論 0 3
  • 一、概念講解 Windows 上最常見(jiàn)的是三種以.zip,.rar,.7z 為后綴的壓縮文件,而在 Linux 上...
    睡不醒醒閱讀 1,247評(píng)論 0 0

友情鏈接更多精彩內(nèi)容