我遇到BAT文件时遇到问题,它不会将文件解压缩到完整路径名,因为某些zip文件包含名称相同的文件,但其中包含不同的销售数据
示例文件
MainLine20140606.zip contains marketingdb.mdb
Valis20140606.zip contains marketingdb.mdb
我不希望这些相互叠加,但又不想手动干预。
BAT文件解压缩运行它的文件夹中的所有zip文件:
@echo off
for /F "delims=" %%I IN (' dir /b /s /a-d *.zip ') DO (
"C:\Program Files\WinRAR\WinRAR.exe" x -y -o"%%~dpI\%%~fI" "%%I"
)
pause
答案 0 :(得分:1)
@echo off
setlocal enableextensions disabledelayedexpansion
set "rarCmd=%programFiles%\WinRAR\WinRAR.exe"
for /r "%cd%" %%a in (*.zip) do "%rarCmd%" x -or -y "%%~fa" * "%~dp0%%~na\"
endlocal
对于当前文件夹(/r "%cd%"
)下的每个zip文件,如果需要,调用winrar提取(x
),并自动重命名(-or
),假设所有查询都是( -y
),zip文件(%%~fa
,即具有完整路径的文件),选择所有文件内容(*
)并将输出放在具有相同名称的文件夹中放置批处理文件的文件夹下的zip(%%~na
)(%~dp0
)
包含-or
是为了不覆盖先前运行的文件,如果不需要则将其删除。
还可以指示目标文件夹的名称添加-ad
开关并从命令中删除目标文件夹中的%%~na\
。
答案 1 :(得分:0)
您可以使用命令
"C:\Program Files\WinRAR\WinRAR.exe" e -ad "Path To\ZIP Files\*.zip" "Path To\Target\Folder\"
使用此命令 WinRAR 将Path To\ZIP Files\
中的所有* .zip解压缩为Path To\Target\Folder\
,对于每个ZIP文件,ZIP文件的名称将附加到目标目录路径。
在 WinRAR 解压缩完所有ZIP文件后,您可以运行以下批处理文件,将所有已创建的子文件夹中的所有marketingdb.mdb
移动到原始目标文件夹,并重命名MDB文件并删除现在为空的文件子文件夹。
@echo off
cd /D "Path To\Target\Folder\"
for /F "delims=" %%I in ('dir * /b /ad') do (
move "%%I\marketingdb.mdb" "%%I.mdb"
rd "%%I"
)