Re: [批次] 解壓縮到原有檔案目錄

看板EzHotKey作者 ( )時間10年前 (2015/08/05 01:19), 10年前編輯推噓5(506)
留言11則, 1人參與, 最新討論串2/2 (看更多)
修正: 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://www.ptt.cc/bbs/EzHotKey/M.1438708743.A.18B.html ※ 編輯: logs (118.171.163.24), 08/05/2015 01:28:04

08/05 01:57, , 1F
再次感謝大大 但是我跑完後下層的壓縮檔好像還是會跑
08/05 01:57, 1F

08/05 01:57, , 2F
上來 但是下層會有原本的解壓縮好的!就上層會多一個xD
08/05 01:57, 2F
已修改,再看看有無問題 原先的方式沒有應對到一個目錄會有多個 rar 變成重複解壓縮

08/05 01:58, , 3F
A(B(b.rar))--變成-->A(b B(b))這樣
08/05 01:58, 3F

08/05 02:01, , 4F
找到問題了! 把第二個/R 拿掉就可以了!
08/05 02:01, 4F

08/05 02:05, , 5F
再問大大一個問題 有沒有方法可以繞過壞檔
08/05 02:05, 5F
用 -INUL switch 避免停住

08/05 02:05, , 6F
就是假如無法解壓縮 就直接跳過去做下一筆 而不是停住
08/05 02:05, 6F

08/05 02:06, , 7F
加個if判斷句 但是不知道內容要怎麼用batch表示
08/05 02:06, 7F

08/05 02:08, , 8F
exist好像不是這樣用 因為要判斷壞檔或錯誤
08/05 02:08, 8F

08/05 02:20, , 9F
剛查了一下 好像可以用python的function去判斷
08/05 02:20, 9F

08/05 02:21, , 10F
還是非常謝謝大大的回應 幫助很多!
08/05 02:21, 10F
※ 編輯: logs (118.171.163.24), 08/05/2015 03:28:43 ※ 編輯: logs (118.171.163.24), 08/05/2015 03:48:57

08/05 04:31, , 11F
沒問題了! 對新手我寫batch而言真的學到超多!大感謝!
08/05 04:31, 11F
文章代碼(AID): #1LmFG76B (EzHotKey)
文章代碼(AID): #1LmFG76B (EzHotKey)