[爆卦].Bat 解壓縮 zip是什麼?優點缺點精華區懶人包

為什麼這篇.Bat 解壓縮 zip鄉民發文收入到精華區:因為在.Bat 解壓縮 zip這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ryousuke ( )看板EZsoft標題Re: [心得] 7-Zip 解壓縮時間Wed Ja...


※ 引述《ryousuke ( )》之銘言:
: 在桌面上存成7z.reg後左鍵點選兩下後即在右鍵上新增7z這個解壓縮項目
: 2.建立處理批次檔案
: ---------請複製除了本行以外的以下文字---------
: for /f "tokens=*" %%a in ('dir /b /a-d %1') do set filename=%%~na
: md "R:\%filename%"
: "C:\Program Files\7-Zip\7z.exe" x %1 -o"R:\%filename%"
: pause
: ---------請複製除了本行以外的以上文字---------
: 開啟記事本後貼上然後另存為7z.bat於C:\
: 預設新增同壓縮檔檔名資料夾的路徑我設在R:\
: 請依自己的需求更改路徑

在網路研究過後發現命令可以簡化
7z.bat內容請替代為
---------請複製除了本行以外的以下文字---------
"C:\Program Files\7-Zip\7z.exe" x %1 -o"R:\%~n1"
pause
---------請複製除了本行以外的以上文字---------

y3k:我覺得7zip缺少的比較重要功能是批次不記錄路徑壓縮 01/09 11:32
y3k:WinRAR還在我電腦裡的原因也只是這個01/09 11:33

y3k:WinRAR的時候可以圈選多個資料夾或檔案 選單加入壓縮檔後01/09 12:18
y3k:在<檔案>分頁勾選"一個檔案建立一個壓縮檔"並在上方檔案路徑01/09 12:26
y3k:下拉選擇"不要儲存路徑"01/09 12:20
y3k:這個功能在整理圖片掃本等等的東西時是很方便的01/09 12:22
y3k:在<檔案>分頁勾選"一個檔案建立一個壓縮檔"並在上方檔案路徑01/09 12:26

說真的壓資料不要資料夾的做法蠻神奇的
我試著去處理不過一直不順利
直到發現7z.exe可以匯入filelist壓縮
不過一直失敗
直到我發現filelist文字檔的編碼必須是utf-8
如果編碼是ANSI的話會格式錯誤

一開始我想找可以將文字檔從ANSI轉碼成utf-8的工具
不過中途發現命令提示字元可以輸出Unicode-LE
還有ConvertZ的Console版ConCmd可以將Unicode-LE轉成utf-8

處理的流程是這樣
先用命令提示字元下製作filelist
再從Unicode-LE轉碼成utf-8後
用7z.exe讀取filelist壓縮

方法如下

1.安裝7-Zip 4.65或以上版本

2.下載ConCmd Ver 1.5並解壓縮到C:\concmd15
http://www.megaupload.com/?d=L239PRVU

3.建立右鍵選單
---------請複製除了本行以外的以下文字---------
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\7za\command]
@="C:\\7za.bat \"%1\""


---------請複製除了本行以外的以上文字---------

在桌面上存成7za.reg後左鍵點選兩下後即在右鍵上新增7za這個壓縮項目

2.建立處理批次檔案
---------請複製除了本行以外的以下文字---------
set list=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
cmd /u /c dir /s/b/A:-D "%~dpn1">%temp%\%list%.txt
"C:\concmd15\ConCmd.exe" /i:ULE /o:utf8 %temp%\%list%.txt
"C:\Program Files\7-Zip\7z.exe" a -t7z "R:\00.7z" @%temp%\%list%.txt
pause
del %temp%\%list%.txt

---------請複製除了本行以外的以上文字---------

開啟記事本後貼上然後另存為7za.bat於C:\

預設壓縮檔路徑我設在R:\00.7z
請依自己的需求更改路徑與壓縮檔檔名

資料夾按右鍵後點7za後就會製作檔案清單後壓縮
唯一的問題就是如果有同檔名檔案將會壓縮失敗

目前我只做出單一資料夾下的檔案壓縮
點選多個資料夾後再壓縮的scrpit目前還沒做出來
請大家多多回應討論

參考資料:

retrieve current directory name in batch
http://www.msfn.org/board/topic/
56320-retrieve-current-directory-name-in-batch/

DIR
Display a list of files and subfolders
http://ss64.com/nt/dir.html

Windows : 在 cmd 下的 dir 輸出 UTF-8 編碼的清單
http://gsyan888.blogspot.com/2011/04/windows-cmd-dir-utf-8.html

漫談Windows XP環境變數
http://texhello.pixnet.net/blog/post/
21374901-%E6%BC%AB%E8%AB%87windows-xp%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.132.105
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:14)
s25g5d4:使用DATE當變數是不切實際的 因為會隨控制台中的地區語言 01/18 22:39
s25g5d4:設定而有不同... 01/18 22:39

用date變數只是一時之間用來當filelist的檔名
壓縮完就會清掉了

s25g5d4:另外 UTF-8不用這樣弄 可以用chcp 65001 01/18 22:39

可以詳細說明方法嗎
謝謝
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:43)
s25g5d4:bat開頭使用chcp 65001 所有輸出資料都將會是UTF-8編碼 01/18 22:46

我試試看把chcp 65001加進去看看

s25g5d4:如果你有去看過你產生的list txt 會發現它的檔名是 01/18 22:47
s25g5d4:週三 21201.txt 雖然不會發生問題 不過感覺很怪就是了 01/18 22:47
s25g5d4:反正那不重要 弄完就刪掉基本上是沒差.... 01/18 22:48

沒有喔
輸出的是YYYYMMDD.txt
你可以拿那一段script跑跑看
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:52)
s25g5d4:唔 在我的電腦跑出來是這樣... 01/18 22:56

我是在xp跑的
你的作業系統是win7嗎
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:57)
s25g5d4:Yes 01/18 23:01

那我再找個固定一點的變數好了
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:15)
s25g5d4:Okay, 我發現問題了 問題在我剛剛提過的chcp...囧 01/18 23:10
s25g5d4:控制台的地區及語言選項也有差... 01/18 23:14

我把chcp加進去會卡住
不知道是什麼問題
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:16)
s25g5d4:把bat檔丟給我吧 01/18 23:18

---------請複製除了本行以外的以下文字---------
chcp 65001
set list=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
cmd /c dir /s/b/A:-D "%~dpn1">%temp%\%list%.txt
"C:\Program Files\7-Zip\7z.exe" a -t7z "R:\00.7z" @%temp%\%list%.txt
pause
del %temp%\%list%.txt

---------請複製除了本行以外的以上文字---------
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:21)
s25g5d4:恩 沒錯 就是%DATE%的問題 01/18 23:21
s25g5d4:改成set list=%RANDOM% 01/18 23:21

改了list也出不來
應該在chcp 65001執行完script就結束了
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:24)
s25g5d4:難道說XP不能改codepage....囧 01/18 23:25

可以改
不過執行完chcp 65001後script就中斷了
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:26)

請問s25g5d4桑批次檔有沒有換行符號
我找到解法了
不過太長需要換行
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:36)
s25g5d4:\n 01/18 23:37
s25g5d4:剛剛開了VM來看 XP cmd對UTF-8的支援性不佳 01/18 23:38

只有字型支援不佳
字碼應該都可以正常處理
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:41)

"C:\Program Files\7-Zip\7z.exe" a -t7z "R:\00.7z" @%temp%\%list%.txt

s25g5d4桑可以幫我寫一下上面的命令換行的方法嗎
我換行一直失敗
※ 編輯: ryousuke 來自: 114.41.132.105 (01/19 00:17)
s25g5d4:單一指令的話不能換行.... 01/19 00:22
s25g5d4:我想改用js or vbs了...bat真OOO麻煩 01/19 00:24

我放棄了
修改後的scrpit在下面
請大家把三行整理成一行吧
s25g5d4桑你看要不要出js或vbs版的scrpit
※ 編輯: ryousuke 來自: 114.41.132.105 (01/19 00:36)

你可能也想看看

搜尋相關網站