iT邦幫忙

0

7z 壓縮 command 指令請教

各位高手大家好,
小弟有用批次檔壓縮的需求
下列是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

還請各位高手幫忙

謝謝

2 個回答

2
jeles51
iT邦研究生 3 級 ‧ 2017-05-03 10:28:46
最佳解答

說明: 把所有副檔名去掉
%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"

看更多先前的回應...收起先前的回應...
junhaogo iT邦新手 5 級 ‧ 2017-05-03 11:04:30 檢舉

謝謝大大的解說,不過想再請教一下,在D:\files\如果有子目錄(資料夾)是否也有法子一併壓縮(剛試的結果資料夾是不會壓縮的)

junhaogo iT邦新手 5 級 ‧ 2017-05-03 11:41:47 檢舉

另外再求救一下,指令在CMD裡可以執行,可是放在BAT檔裡不行(存檔的編碼為ANSI)
謝謝

cshalove iT邦新手 5 級 ‧ 2017-05-03 11:52:15 檢舉

放在 BAT 檔案 記得要用 %%i 就是 再多一個 %

jeles51 iT邦研究生 3 級 ‧ 2017-05-03 12:10:41 檢舉

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

junhaogo iT邦新手 5 級 ‧ 2017-05-03 13:41:04 檢舉

子資料夾也可以了,謝謝指導
PS.其實我也在谷哥上爬了很多文
可能關鍵字不對吧,最後才想說上來請教

jeles51 iT邦研究生 3 級 ‧ 2017-05-03 13:46:51 檢舉

IThome也是挖寶地,我也很常上來吸取精華...XD

0
218ptj
iT邦新手 5 級 ‧ 2017-05-09 21:43:34

google查詢關鍵字
"7zip" or "7-zip" and bat or "batch" and command or cmd or scrip

如果把and拿掉, 用空格取代...會少很多資料,
出來的全都是老外的文章

我要發表回答

立即登入回答