為什麼這篇.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
---------請複製除了本行以外的以上文字---------
說真的壓資料不要資料夾的做法蠻神奇的
我試著去處理不過一直不順利
直到發現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)
用date變數只是一時之間用來當filelist的檔名
壓縮完就會清掉了
可以詳細說明方法嗎
謝謝
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:43)
我試試看把chcp 65001加進去看看
沒有喔
輸出的是YYYYMMDD.txt
你可以拿那一段script跑跑看
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:52)
我是在xp跑的
你的作業系統是win7嗎
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 22:57)
那我再找個固定一點的變數好了
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:15)
我把chcp加進去會卡住
不知道是什麼問題
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:16)
---------請複製除了本行以外的以下文字---------
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)
改了list也出不來
應該在chcp 65001執行完script就結束了
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:24)
可以改
不過執行完chcp 65001後script就中斷了
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:26)
請問s25g5d4桑批次檔有沒有換行符號
我找到解法了
不過太長需要換行
※ 編輯: ryousuke 來自: 114.41.132.105 (01/18 23:36)
只有字型支援不佳
字碼應該都可以正常處理
※ 編輯: 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)
我放棄了
修改後的scrpit在下面
請大家把三行整理成一行吧
s25g5d4桑你看要不要出js或vbs版的scrpit
※ 編輯: ryousuke 來自: 114.41.132.105 (01/19 00:36)