标题: [文件操作] [分享]批处理把解压缩出来的文件命名为压缩包的名字 [打印本页]
作者: Batcher 时间: 2022-2-23 11:37 标题: [分享]批处理把解压缩出来的文件命名为压缩包的名字
【问题描述】
如何批量解压有密码的压缩包(密码为通用的6个密码),并自动重命名解压出来的文件为压缩包名,解压完成后自动删除压缩包。
有文件夹的自动把文件夹里面的文件移出,并重命名为压缩包的名字。移出后删除原文件夹。
多个能标记下手动处理嘛,或者在前面后面随机生成一个其他的数。
作者: Batcher 时间: 2022-2-23 11:38
【解决方案】- @echo off
- REM 根据自己电脑实际情况设置 7-Zip 的路径
- set "path=C:\Program Files\7-Zip;%path%"
-
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set "StageFolder=%temp%\BatHomeUncompress"
- for /f "delims=" %%a in ('dir /b /s /a-d *.zip *.rar') do (
- echo 正在处理文件 %%a
- md "%StageFolder%"
- for /f "delims=" %%b in ('7z l "%%a" ^| findstr /c:"....A" ^| find /v /c ""') do (
- REM 根据实际情况设置-p参数后面的密码
- 7z x "%%a" -p123456 -o%StageFolder% >nul
- if %%b equ 1 (
- for /f "delims=" %%c in ('dir /b /s /a-d "%StageFolder%"') do (
- move /y "%%c" "%%~na%%~xc"
- )
- ) else (
- set "n=1"
- for /f "delims=" %%c in ('dir /b /s /a-d "%StageFolder%"') do (
- move /y "%%c" "%%~na_!n!%%~xc"
- set /a n+=1
- )
- )
- )
- rd /s /q "%StageFolder%"
- )
- echo 验证解压缩结果无误之后再删除压缩包
- REM del /f /q /s *.zip *.rar
- pause
复制代码
作者: Batcher 时间: 2022-2-23 11:44
test_2.bat
简化一下,把最里层的两个for循环合并成一个:- @echo off
- REM 根据自己电脑实际情况设置 7-Zip 的路径
- set "path=C:\Program Files\7-Zip;%path%"
-
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set "StageFolder=%temp%\BatHomeUncompress"
- for /f "delims=" %%a in ('dir /b /s /a-d *.zip *.rar') do (
- echo 正在处理文件 %%a
- md "%StageFolder%"
- for /f "delims=" %%b in ('7z l "%%a" ^| findstr /c:"....A" ^| find /v /c ""') do (
- REM 根据实际情况设置-p参数后面的密码
- 7z x "%%a" -p123456 -o%StageFolder% >nul
- set "n=1"
- for /f "delims=" %%c in ('dir /b /s /a-d "%StageFolder%"') do (
- if %%b equ 1 (
- move /y "%%c" "%%~na%%~xc"
- ) else (
- move /y "%%c" "%%~na_!n!%%~xc"
- set /a n+=1
- )
- )
- )
- rd /s /q "%StageFolder%"
- )
- echo 验证解压缩结果无误之后再删除压缩包
- REM del /f /q /s *.zip *.rar
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |