查看完整版本: [已解決]想用7z的語法一次解壓縮不同密碼的壓縮檔,讓檔案不被覆蓋過去
頁: [1] 2

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位元組的檔案,更糟糕的是會覆蓋正確解壓的檔案。
請問有辦法解決嗎?

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

snowflying 發表於 2018-3-4 02:31 PM

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

把密碼存在 password.txt 裡面
然後執行這個 batch

@echo off
setlocal enabledelayedexpansion

for %%x in (*.rar) do (
    call :inner %%x
)
pause
goto :eof

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

:eof

BJ2016 發表於 2018-3-4 06:59 PM

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

snowflying 發表於 2018-3-4 02:31 PM static/image/common/back.gif
把密碼存在 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 static/image/common/back.gif
非常感謝您!已經解決了。
再請教問題。
可是這程式只能解開rar有辦法連7z和zip格式一起解壓嗎?

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

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

:inner
for /f "tokens=*" %%a in (password.txt) do (
  "C:\Program Files\7-Zip\7z.exe" x -p"%%a" %1 -o"*" -y 1>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

BJ2016 發表於 2018-3-4 08:56 PM

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

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

BJ2016 發表於 2018-3-4 09:24 PM

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


真的非常感謝您。
發現加入這行語法後,找不到密碼會出現空的資料夾。
請問有辦法解決嗎?

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

BJ2016 發表於 2018-3-4 09:24 PM static/image/common/back.gif
真的非常感謝您。
發現加入這行語法後,找不到密碼會出現空的資料夾。
請問有辦法解決嗎? ...


@echo off
setlocal enabledelayedexpansion

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

:inner
for /f "tokens=*" %%a in (password.txt) do (
  "C:\Program Files\7-Zip\7z.exe" x -p"%%a" %1 -o"*" -y 1>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

BJ2016 發表於 2018-4-14 06:57 AM

snowflying 發表於 2018-3-4 09:51 PM static/image/common/back.gif


您好。
經過了一個月測試,發現只要密碼是中文
就找不到密碼,也無法解壓。
請問有辦法解決嗎?

BJ2016 發表於 2018-4-14 10:55 PM

本帖最後由 BJ2016 於 2018-4-14 10:59 PM 編輯

BJ2016 發表於 2018-4-14 06:57 AM static/image/common/back.gif
您好。
經過了一個月測試,發現只要密碼是中文
就找不到密碼,也無法解壓。

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



...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

BJ2016 發表於 2018-4-15 07:47 AM

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

感謝您幫我測試
<br><br><br><br><br><div></div>

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 static/image/common/back.gif
年底已經到了,大大的程式碼非常好用,真的感謝您

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



@echo off

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

pause
goto :EOF

:HANDLE_FILE

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

if %flag% == 0 (
    echo %~n1
    RMDIR /S /Q %~n1
)

goto :EOF

:7z

if %flag% == 1 (
    goto :EOF
)

"C:\Program Files\7-Zip\7z.exe" x -p""%2"" ""%1"" -o"*" -y 1>...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

BJ2016 發表於 2018-12-7 06:52 AM

snowflying 發表於 2018-12-6 04:29 PM static/image/common/back.gif


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

非常感謝。

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 static/image/common/back.gif
更改了之後,變成只能解壓一個壓縮檔,就會自動關閉視窗。
也就是說:無法連續解壓複數的壓縮檔。
不好意思 ...
可是我這邊測試可以正常解壓縮多個壓縮檔 {:11:}<br><br><br><br><br><div></div>
頁: [1] 2