伊莉討論區

標題: [已解決]想用7z的語法一次解壓縮不同密碼的壓縮檔,讓檔案不被覆蓋過去 [打印本頁]

作者: BJ2016    時間: 2018-3-4 09:31 AM     標題: [已解決]想用7z的語法一次解壓縮不同密碼的壓縮檔,讓檔案不被覆蓋過去

本帖最後由 BJ2016 於 2018-3-4 07:02 PM 編輯

我使用7z的語法來解壓了,語法如下。
"C:\Program Files\7-Zip\7z.exe" x -patx "*.rar" -o"*" -y
"C:\Program Files\7-Zip\7z.exe" x -pNonToxic "*.rar" -o"*" -y
"C:\Program Files\7-Zip\7z.exe" x -p123 "*.rar" -o"*" -y
"C:\Program Files\7-Zip\7z.exe" x -ppicapica "*.rar" -o"*" -y
"C:\Program Files\7-Zip\7z.exe" x -pSTARS "*.rar" -o"*" -y

我發現解壓密碼錯誤會出現0位元組的檔案,更糟糕的是會覆蓋正確解壓的檔案。
請問有辦法解決嗎?


作者: snowflying    時間: 2018-3-4 02:31 PM

本帖最後由 snowflying 於 2018-3-4 02:35 PM 編輯

把密碼存在 password.txt 裡面
然後執行這個 batch
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. for %%x in (*.rar) do (
  4.     call :inner %%x
  5. )
  6. pause
  7. goto :eof

  8. :inner
  9. for /f "tokens=*" %%a in (password.txt) do (
  10.   "C:\Program Files\7-Zip\7z.exe" x -p%%a %1 -o"*" -y 1>NUL:
  11.   
  12.   if !errorlevel! == 0 (
  13.     echo %1 Success
  14.     goto :eof
  15.   )
  16. )

  17. :eof
複製代碼

作者: BJ2016    時間: 2018-3-4 06:59 PM

本帖最後由 BJ2016 於 2018-3-4 07:06 PM 編輯
snowflying 發表於 2018-3-4 02:31 PM
把密碼存在 password.txt 裡面
然後執行這個 batch

非常感謝您!已經解決了。
再請教問題。
可是這程式只能解開rar有辦法連7z和zip格式一起解壓嗎?


作者: snowflying    時間: 2018-3-4 07:13 PM

本帖最後由 snowflying 於 2018-3-4 07:44 PM 編輯
BJ2016 發表於 2018-3-4 06:59 PM
非常感謝您!已經解決了。
再請教問題。
可是這程式只能解開rar有辦法連7z和zip格式一起解壓嗎?

我順便把 %%x 放入 "" 內了
怕有時候遇到非英文數字字元會有問題
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. for %%x in (*.rar,*.zip,*.7z) do (
  4.     call :inner "%%x"
  5. )
  6. pause
  7. goto :eof

  8. :inner
  9. for /f "tokens=*" %%a in (password.txt) do (
  10.   "C:\Program Files\7-Zip\7z.exe" x -p"%%a" %1 -o"*" -y 1>NUL:
  11.   
  12.   if !errorlevel! == 0 (
  13.     echo %1 Success
  14.     goto :EOF
  15.   )
  16. )

  17. :eof
複製代碼

作者: BJ2016    時間: 2018-3-4 08:56 PM

snowflying 發表於 2018-3-4 07:13 PM
我順便把 %%x 放入 "" 內了
怕有時候遇到非英文數字字元會有問題

不好意思,打擾了,謝謝您解答我的問題。
我又遇見問題了。
可以請問一下,有辦法加一行語法。
將解壓成功的壓縮檔刪除嗎?

作者: BJ2016    時間: 2018-3-4 09:24 PM

BJ2016 發表於 2018-3-4 08:56 PM
不好意思,打擾了,謝謝您解答我的問題。
我又遇見問題了。
可以請問一下,有辦法加一行語法。

真的非常感謝您。
發現加入這行語法後,找不到密碼會出現空的資料夾。
請問有辦法解決嗎?
作者: snowflying    時間: 2018-3-4 09:51 PM

BJ2016 發表於 2018-3-4 09:24 PM
真的非常感謝您。
發現加入這行語法後,找不到密碼會出現空的資料夾。
請問有辦法解決嗎? ...
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. for %%x in (*.rar,*.zip,*.7z) do (
  4.     call :inner "%%x"
  5. )
  6. pause
  7. goto :eof

  8. :inner
  9. for /f "tokens=*" %%a in (password.txt) do (
  10.   "C:\Program Files\7-Zip\7z.exe" x -p"%%a" %1 -o"*" -y 1>NUL:
  11.   
  12.   if !errorlevel! == 0 (
  13.     echo %1 Success
  14.     del %1
  15.     goto :EOF
  16.   )
  17. )

  18. RMDIR /S /Q %~n1

  19. :eof
複製代碼

作者: BJ2016    時間: 2018-4-14 06:57 AM

snowflying 發表於 2018-3-4 09:51 PM

您好。
經過了一個月測試,發現只要密碼是中文
就找不到密碼,也無法解壓。
請問有辦法解決嗎?
作者: BJ2016    時間: 2018-4-14 10:55 PM

本帖最後由 BJ2016 於 2018-4-14 10:59 PM 編輯
BJ2016 發表於 2018-4-14 06:57 AM
您好。
經過了一個月測試,發現只要密碼是中文
就找不到密碼,也無法解壓。

我這邊隨便壓縮,測試好幾遍,把檔案搬到非中文路徑,變換不同的zip、rar、7z版本。
全都不能用中文壓縮密碼解開。
如果您那邊測試可以的話,那麼明顯就是我電腦的問題了。
我這邊是系統win10,7z版本是7-Zip 18.01
想要請問你安裝的是那一個版本啊?




作者: BJ2016    時間: 2018-4-15 07:47 AM

不好意思,已經解決了,結果不是電腦的問題。
上次我儲存password.txt的編碼是用UTF-8
結果又另存新檔儲存成ANSI模式就可以了。

感謝您幫我測試

作者: BJ2016    時間: 2018-12-6 10:54 AM

本帖最後由 BJ2016 於 2018-12-6 10:55 AM 編輯

年底已經到了,大大的程式碼非常好用,真的感謝您

但是只要檔名有「!」半形,就無法解壓。

不知道是否能夠解決這麼問題呢?

作者: snowflying    時間: 2018-12-6 04:29 PM

BJ2016 發表於 2018-12-6 10:54 AM
年底已經到了,大大的程式碼非常好用,真的感謝您

但是只要檔名有「!」半形,就無法解壓。
  1. @echo off

  2. for %%x in (*.rar,*.zip,*.7z) do (
  3.     set flag=0
  4.     call :HANDLE_FILE "%%x"
  5. )

  6. pause
  7. goto :EOF

  8. :HANDLE_FILE

  9. for /f "tokens=*" %%a in (password.txt) do (
  10.     call :7z %1 "%%a"
  11. )

  12. if %flag% == 0 (
  13.     echo %~n1
  14.     RMDIR /S /Q %~n1
  15. )

  16. goto :EOF

  17. :7z

  18. if %flag% == 1 (
  19.     goto :EOF
  20. )

  21. "C:\Program Files\7-Zip\7z.exe" x -p""%2"" ""%1"" -o"*" -y 1>NUL:

  22. if %errorlevel% == 0 (
  23.     set flag=1
  24.     echo %1 Success
  25.     del %1
  26.     goto :EOF
  27. )

  28. :EOF
複製代碼

作者: BJ2016    時間: 2018-12-7 06:52 AM

snowflying 發表於 2018-12-6 04:29 PM

可以用了,感恩。
不然,每次都要改一下檔名太麻煩了。

非常感謝。
作者: BJ2016    時間: 2018-12-7 11:27 AM

更改了之後,變成只能解壓一個壓縮檔,就會自動關閉視窗。
也就是說:無法連續解壓複數的壓縮檔。
不好意思,可以解決這個問題嗎?
作者: snowflying    時間: 2018-12-10 05:53 PM

本帖最後由 snowflying 於 2018-12-10 05:53 PM 編輯
BJ2016 發表於 2018-12-7 11:27 AM
更改了之後,變成只能解壓一個壓縮檔,就會自動關閉視窗。
也就是說:無法連續解壓複數的壓縮檔。
不好意思 ...

可是我這邊測試可以正常解壓縮多個壓縮檔
作者: BJ2016    時間: 2018-12-10 07:03 PM

抱歉,重開機又可以用了。
非常感謝您
作者: BJ2016    時間: 2018-12-11 10:00 AM

snowflying 發表於 2018-12-10 05:53 PM
可是我這邊測試可以正常解壓縮多個壓縮檔

我懂了,是日文字,沒辦法解日文字檔名的壓縮檔。
中文和英文都可以,但是就是沒辦法解開檔名有日文的壓縮檔
作者: BJ2016    時間: 2018-12-11 08:28 PM

那麼大概就是我的電腦問題了,當我解開複數的壓縮檔時,
解開到有日文字的檔名解開就會停止。

非常感謝您的測試。
作者: llflzy    時間: 2019-3-24 02:48 AM

本帖最後由 llflzy 於 2019-3-24 02:50 AM 編輯

想問一下樓主.. 這個代碼沒進度條... 解壓 也不知道什麼時候完成 你有帶進度條的代碼麼

我並不是想 挖墳..  確實也有著方面的需求  而且解壓分卷的時候 不會合並 一個一個都是解壓到單獨的...




歡迎光臨 伊莉討論區 (http://www15.eyny.com/) Powered by Discuz!