我正在尝试编写一个批处理文件来解压 .7z 文件...将它们提取到其原始文件夹。我遇到的问题是将密码添加到代码中。有人可以帮忙吗?
谢谢!
这是目前的代码...
@echo off
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.7z) DO (
"C:\Program Files\7-zip\7z.exe" x "%%X"
)
popd
)
答案1
我会这样做 也..
我有点奇怪,我更喜欢在一个循环中减少几次代码量...这是可能的:
@echo off
for /f tokens^=* %%i in ('2>nul %__AppDir__%where.exe /r "d:\your\folder" *.7z'
)do "c:\program files\7-zip\7z.exe" x "%%~fi" -o"%%~dpi\" -p"YouRPassWord"
答案2
以下是我的做法。
我有点奇怪,因为我更喜欢使用基于函数的方法
call :<function_name>
和goto :EOF
。
这解决了需要 EnableDelayedExpansion(我不喜欢使用)的问题。每个人都有自己的想法……这个代码应该可以工作。
另外,删除 ECHO 语句!!在这里,您可以在实际运行之前测试此代码!;)
@echo off
for /d /r %%d in (*) do call :ProcessDirectory "%%d"
goto :EOF
:ProcessDirectory
pushd %1
::Make sure pushd success.. otherwise, return to loop to the next dir
if not ERRORLEVEL 0 goto :EOF
for %%f in ("*.7z") do echo "C:\Program Files\7-zip\7z.exe" x %%f -pTHEPASSWORD
popd
goto :EOF