作者logs ( )
看板EzHotKey
標題Re: [批次] 解壓縮到原有檔案目錄
時間Wed Aug 5 01:19:00 2015
修正: WinRAR 可以直接指定解壓縮位置,do 的內容就不用兩行
新增: -INUL 略過錯誤訊息,這樣 WinRAR 就不會因為錯誤訊息停止
-ILOG 輸出錯誤訊息,以 append 方式寫入,不會被重複覆寫只留下最後錯誤
^^^^^ (須購買正式版本才有)
rar 指令/開關可以放到 set 變數中
@echo off
set rar="D:\Winrar\Winrar.exe" x
-INUL -ILOGD:\ErrLog.txt -ibck -o+ -p2119
for /R %%I in (*.rar) do %rar%
"%%I" "%%~dpI"
pause
PS: 不確定是否有必要再加上
雙引號 "" 來避免檔案及路徑的空格問題,請斟酌測試
Win 版本比較好 (記得遇過檔名問題,但可能早已修正了)
ibck --> run in background
※ 引述《iamgodisme (miles)》之銘言:
: 最近小弟在備幫家人分硬碟中資料
: 因為資檔案量有點大 所以打算一次壓縮跑完
: 但是目前小弟只能寫到 讓一個目錄底下的全部rar檔解壓縮
: 沒辦法在讓他自動往下繼續做 並且解壓縮到同個資料夾
: 簡單來說就是解壓縮檔案到原本檔案的目錄下就好
: 剛剛改良了一下 可以做到讓目錄下(包含子目錄內)的全部rar檔解壓縮到
: 當前執行.bat位置 但是這不我需要的
: 舉例說明:A(B(b.rar)C(c.rar D(d.rar)))理想是變成A(B(b)C(c D(d)))
: 就解壓到原本的目錄下就好 我改良後的變成A(b c d B C(D))全部都跑到A層了..
: ----------------------------------------------------
: @echo off
: set rar="D:\Winrar\Rar.exe"
: for /R %%f in (*.rar) do %rar% x -o+ -p2119 %%f
: pause
: -----------------------------------------------------
: 以上是我的程式碼
: 希望有大大可以解惑 小弟感激不盡!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.163.24
※ 文章網址: https://webptt.com/m.aspx?n=bbs/EzHotKey/M.1438708743.A.18B.html
※ 編輯: logs (118.171.163.24), 08/05/2015 01:28:04
1F:推 iamgodisme: 再次感謝大大 但是我跑完後下層的壓縮檔好像還是會跑 08/05 01:57
2F:→ iamgodisme: 上來 但是下層會有原本的解壓縮好的!就上層會多一個xD 08/05 01:57
已修改,再看看有無問題
原先的方式沒有應對到一個目錄會有多個 rar 變成重複解壓縮
3F:→ iamgodisme: A(B(b.rar))--變成-->A(b B(b))這樣 08/05 01:58
4F:推 iamgodisme: 找到問題了! 把第二個/R 拿掉就可以了! 08/05 02:01
5F:推 iamgodisme: 再問大大一個問題 有沒有方法可以繞過壞檔 08/05 02:05
用 -INUL switch 避免停住
6F:→ iamgodisme: 就是假如無法解壓縮 就直接跳過去做下一筆 而不是停住 08/05 02:05
7F:→ iamgodisme: 加個if判斷句 但是不知道內容要怎麼用batch表示 08/05 02:06
8F:→ iamgodisme: exist好像不是這樣用 因為要判斷壞檔或錯誤 08/05 02:08
9F:推 iamgodisme: 剛查了一下 好像可以用python的function去判斷 08/05 02:20
10F:→ iamgodisme: 還是非常謝謝大大的回應 幫助很多! 08/05 02:21
※ 編輯: logs (118.171.163.24), 08/05/2015 03:28:43
※ 編輯: logs (118.171.163.24), 08/05/2015 03:48:57
11F:推 iamgodisme: 沒問題了! 對新手我寫batch而言真的學到超多!大感謝! 08/05 04:31