Board logo

主題: [求助] [問題]7z 批次壓縮 [打印本頁]

發表人: 風見    時間: 2010-3-8 05:45 PM     主題: [問題]7z 批次壓縮

http://www.wretch.cc/blog/lcwmax/21095469

上述網頁有教人如何使用7z來做批次壓縮,但壓縮完的檔案會和未壓縮的檔案放在同一個資料夾,請問如何修改可以讓壓縮時可以指定不同的資料夾?謝謝
發表人: Ailio    時間: 2010-3-9 05:46 PM

用比較笨的方法

自己在最後加上

md zip
move *.zip zip

自己把壓好的zip 搬到 zip資料夾下
發表人: badcat    時間: 2010-3-12 12:20 AM

@echo off
set Z7_Path=c:\program files\7-zip\7z.exe
for %%a in (%*) do (
        dir /a %%a|findstr "DIR" >nul 2>nul && (
                "%Z7_Path%" a -tzip "..\%%~na.zip" "%%~a\*"
                ) || (
                "%Z7_Path%" a -tzip "..\%%~na.zip" "%%a"
                )
        )

一. 只要變換藍色字的部份,壓縮檔自然能切換到不同路徑。(此例 "..\" 為「上一層目錄」。)

二. 紅色" 的雙引號應該要加入,否則遇到有「空格」的檔名會無法處理。

三. 另 因為 7Z 執行檔路徑的 a 和 for 的 %%a 容易混淆。故將
a=c:\program files\7-zip\7z.exe
換成
Z7_Path=c:\program files\7-zip\7z.exe
(作者變數名稱的命名方式不好。)
發表人: 風見    時間: 2010-3-18 07:34 PM


引用:
badcat寫到:
@echo off
set Z7_Path=c:\program files\7-zip\7z.exe
for %%a in (%*) do (
        dir /a %%a|findstr "DIR" >nul 2>nul && (
                "%Z7_Path%" a -tzip "..\%%~na.zip" "%%~a\*"
                ) || (
                "%Z7_Path%" a -tzip "..\%%~na.zip" "%%a"
                )
        )

一. 只要變換藍色字的部份,壓縮檔自然能切換到不同路徑。(此例 "..\" 為「上一層目錄」。)

二. 紅色" 的雙引號應該要加入,否則遇到有「空格」的檔名會無法處理。

三. 另 因為 7Z 執行檔路徑的 a 和 for 的 %%a 容易混淆。故將
a=c:\program files\7-zip\7z.exe
換成
Z7_Path=c:\program files\7-zip\7z.exe
(作者變數名稱的命名方式不好。)


這個資料夾[AGPS][2月新作][070223](カクテルソフト)ぴあ雀(α補修済iso),無法和其它資料夾一起做 批次壓縮,請問是什麼原因。
發表人: badcat    時間: 2010-3-18 09:37 PM

壞喵 第一個想到的是 Unicode 字集的問題 (findstr 無法處理 Unicode,ANSI Big-5 日文不算 Unicode),先試著不用 Unicode 字集看看。(因為 壞喵 沒有用 7-Zip 的環境,所以只能就批次檔的寫作經驗回答。)
發表人: froce    時間: 2010-3-30 01:38 AM

執行下面指令的結果...
echo [AGPS][2月新作][070223](カクテルソフト)ぴあ雀(α補修済iso)|findstr ".*済.*"

[AGPS][2月新作][070223](???????)??雀(α補修?iso)
所以當然不行啦...unicode的問題...
好樣的微軟...

可能的解決法...我都沒試過...不保證可行...
1.UAO應該可以...不過我不推薦...
2.裝sfu...改用grep...我沒試過...應該是有支援unicode...
http://technet.microsoft.com/zh-tw/interopmigration/bb380242.aspx

其他grep工具像是GNU for win32和cygwin都不行...
發表人: badcat    時間: 2010-3-30 09:07 AM

終於有人來討論了,先丟一個修正版本,可使用 Unicode 檔名/目錄。(其實還不盡完善,但在此主題中夠用了!)

看不懂再來討論。

CODE:
[Copy to clipboard]
@echo off
set Z7_Path=c:\program files\7-zip\7z.exe
for %%a in (%*) do (
  if not exist "%%~a" goto ERROR1
    if exist "%%~a\" (
     "%Z7_Path%" a -tzip "..\%%~na.zip" "%%~a\*"
    ) ELSE (
     "%Z7_Path%" a -tzip "..\%%~na.zip" "%%a"
    )
)

goto END

:ERROR1
echo Not exist PathName "%1" !
goto END

:END





歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0