Re: [心得] 7-Zip 解壓縮

看板EZsoft (小軟體)作者 ( )時間14年前 (2012/01/18 21:59), 編輯推噓11(1108)
留言19則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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 ---------請複製除了本行以外的以上文字---------

01/09 11:32,
我覺得7zip缺少的比較重要功能是批次不記錄路徑壓縮
01/09 11:32

01/09 11:33,
WinRAR還在我電腦裡的原因也只是這個
01/09 11:33

01/09 12:18,
WinRAR的時候可以圈選多個資料夾或檔案 選單加入壓縮檔後
01/09 12:18

01/09 12:26,
在<檔案>分頁勾選"一個檔案建立一個壓縮檔"並在上方檔案路徑
01/09 12:26

01/09 12:20,
下拉選擇"不要儲存路徑"
01/09 12:20

01/09 12:22,
這個功能在整理圖片掃本等等的東西時是很方便的
01/09 12:22

01/09 12:26,
在<檔案>分頁勾選"一個檔案建立一個壓縮檔"並在上方檔案路徑
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)

01/18 22:39, , 1F
使用DATE當變數是不切實際的 因為會隨控制台中的地區語言
01/18 22:39, 1F

01/18 22:39, , 2F
設定而有不同...
01/18 22:39, 2F
用date變數只是一時之間用來當filelist的檔名 壓縮完就會清掉了

01/18 22:39, , 3F
另外 UTF-8不用這樣弄 可以用chcp 65001
01/18 22:39, 3F
可以詳細說明方法嗎 謝謝 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:43)

01/18 22:46, , 4F
bat開頭使用chcp 65001 所有輸出資料都將會是UTF-8編碼
01/18 22:46, 4F
我試試看把chcp 65001加進去看看

01/18 22:47, , 5F
如果你有去看過你產生的list txt 會發現它的檔名是
01/18 22:47, 5F

01/18 22:47, , 6F
週三 21201.txt 雖然不會發生問題 不過感覺很怪就是了
01/18 22:47, 6F

01/18 22:48, , 7F
反正那不重要 弄完就刪掉基本上是沒差....
01/18 22:48, 7F
沒有喔 輸出的是YYYYMMDD.txt 你可以拿那一段script跑跑看 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:52)

01/18 22:56, , 8F
唔 在我的電腦跑出來是這樣...
01/18 22:56, 8F
我是在xp跑的 你的作業系統是win7嗎 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:57)

01/18 23:01, , 9F
Yes
01/18 23:01, 9F
那我再找個固定一點的變數好了 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:15)

01/18 23:10, , 10F
Okay, 我發現問題了 問題在我剛剛提過的chcp...囧
01/18 23:10, 10F

01/18 23:14, , 11F
控制台的地區及語言選項也有差...
01/18 23:14, 11F
我把chcp加進去會卡住 不知道是什麼問題 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:16)

01/18 23:18, , 12F
把bat檔丟給我吧
01/18 23:18, 12F
---------請複製除了本行以外的以下文字--------- 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)

01/18 23:21, , 13F
恩 沒錯 就是%DATE%的問題
01/18 23:21, 13F

01/18 23:21, , 14F
改成set list=%RANDOM%
01/18 23:21, 14F
改了list也出不來 應該在chcp 65001執行完script就結束了 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:24)

01/18 23:25, , 15F
難道說XP不能改codepage....囧
01/18 23:25, 15F
可以改 不過執行完chcp 65001後script就中斷了 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:26) 請問s25g5d4桑批次檔有沒有換行符號 我找到解法了 不過太長需要換行 ※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:36)

01/18 23:37, , 16F
\n
01/18 23:37, 16F

01/18 23:38, , 17F
剛剛開了VM來看 XP cmd對UTF-8的支援性不佳
01/18 23:38, 17F
只有字型支援不佳 字碼應該都可以正常處理 ※ 編輯: 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)

01/19 00:22, , 18F
單一指令的話不能換行....
01/19 00:22, 18F

01/19 00:24, , 19F
我想改用js or vbs了...bat真OOO麻煩
01/19 00:24, 19F
我放棄了 修改後的scrpit在下面 請大家把三行整理成一行吧 s25g5d4桑你看要不要出js或vbs版的scrpit ※ 編輯: ryousuke 來自: 114.41.132.105 (01/19 00:36)
文章代碼(AID): #1F5j1BjB (EZsoft)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1F5j1BjB (EZsoft)