@echo off&setlocal enabledelayedexpansion
set path=%paht%;%cd%
set passwd=xxxxxxxxx
title 解压文件夹下所有密码压缩包
for /f "delims=" %%a in ('dir /b /s /ad') do (
set folder=%%a
set folder=!folder:%cd%\=!
echo -------------------------------------!folder!-------------------------------------
pushd %%a
for /f "delims=" %%b in ('dir /b /a-d "*.7z"') do (
del /q /s /f "f_%%~nb" 1>nul 2>nul
7z x -y -aos -p%passwd% -o"f_%%~nb" "%%b"
ren "f_%%~nb\*" "%%~nb"
move /y "f_%%~nb\%%~nb" "%%~nb" 1>nul
rd /s /q "f_%%~nb"
)
popd
)
echo.
echo ---------------------------------------------------------------------------------
set /p=allend.
目前还没找到解压时直接重命名文件的程序,所以只能解压后找到文件名再进行重命名。
使用以下命令是可以查看到压缩包内的文件名的,但是一用到bat里面调用返回值就乱码显示了。
7z l xx.7z
针对每个压缩包里面只有一个文件,核心代码是解压到指定的目录中,然后对目录中的文件进行重命名,我这里用到的是
ren "%folder%\*" "xxx.xx"
对文件夹里面的文件进行重命名,因为没办法获取文件名来定位那个文件。
参考文献:
7z命令行操作指南之解压缩
https://blog.csdn.net/weekdawn/article/details/74455741
7z命令行简单使用
https://www.cnblogs.com/lczmx/p/12820077.html
7z 命令行详解
https://blog.csdn.net/pyf09/article/details/54943600