各位高手大家好,
小弟有用批次檔壓縮的需求
下列是7z的壓縮指令,但會把d:\test底下所有的檔案都合併壓到test.zip裡
@echo off
set a=C:\Program Files\7-Zip\7zG.exe
7z a -tzip D:\test.zip D:\test\*
要如何修改才能各別壓縮並用原本的檔名
例如D:\test底下有1.txt,2.txt等檔案,壓縮完後會變成1.zip跟2.zip
還請各位高手幫忙
謝謝
說明: 把所有副檔名去掉
%i 為原始檔名
%~ni 為無副檔名的字串
for %i in (d:\files\*.*) DO 7z.exe a -tzip "d:\%~ni.zip" "%i"
說明:把副檔名都是txt的去掉.for %i in (d:\files\*.txt) DO 7z.exe a -tzip "d:\%~ni.zip" "%i"
謝謝大大的解說,不過想再請教一下,在D:\files\如果有子目錄(資料夾)是否也有法子一併壓縮(剛試的結果資料夾是不會壓縮的)
另外再求救一下,指令在CMD裡可以執行,可是放在BAT檔裡不行(存檔的編碼為ANSI)
謝謝
放在 BAT 檔案 記得要用 %%i 就是 再多一個 %
Example:
D:\files
D:\files\a.txt
D:\files\b.txt
D:\files\aaa\c.txt
D:\files\aaa\d.txt
指令
FOR /F "usebackq delims=?" %i IN (`DIR d:\files /B`) DO 7z.exe a -tzip "d:\%~ni.zip" "d:\files\%i"
結果:
D:\a.zip
D:\b.zip
D:\aaa.zip
上述範例僅適用子資料夾只有一層.
以上不知是否有達到需求!?
PS.谷哥很好用~
來源參考:
https://superuser.com/questions/311937/how-do-i-create-separate-zip-files-for-each-selected-file-directory-in-7zip
子資料夾也可以了,謝謝指導
PS.其實我也在谷哥上爬了很多文
可能關鍵字不對吧,最後才想說上來請教
IThome也是挖寶地,我也很常上來吸取精華...XD
google查詢關鍵字
"7zip" or "7-zip" and bat or "batch" and command or cmd or scrip
如果把and拿掉, 用空格取代...會少很多資料,
出來的全都是老外的文章