Batch file 使用BAT文件将文件解压缩到完整路径

Batch file 使用BAT文件将文件解压缩到完整路径,batch-file,Batch File,我在使用BAT文件时遇到问题,因为某些zip文件包含名为相同但包含不同销售数据的文件,所以它无法将文件提取到其完整路径名 示例文件 MainLine20140606.zip contains marketingdb.mdb Valis20140606.zip contains marketingdb.mdb 我不想让它们相互过度写入,但也不想手动干预 BAT文件解压运行它的文件夹中的所有zip文件: @echo off for /F "delims=" %%I IN (' dir /b /

我在使用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

您可以使用该命令

"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文件的名称附加到目标目录路径

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"
)
对于当前文件夹下的每个zip文件(
/r“%cd%”
),调用winrar提取(
x
),如果需要,自动重命名(
-或
),假设所有查询都是(
-y
),zip文件(
%~fa
,即具有完整路径的文件),选择所有文件内容(
*
)并将输出放在一个文件夹中,该文件夹的名称与放置批处理文件的文件夹下的zip(
%%~na
)的名称相同(
%%~dp0

包含
-或
,以避免覆盖以前运行的文件,如果不需要,请将其删除


通过添加
-ad
开关并从命令中的目标文件夹中删除
%%~na\
,还可以指示目标文件夹的名称。

有一点不清楚:您是想用zip文件的名称提取单独文件夹中的每个zip文件,还是需要提取同一文件夹中的所有文件重命名了输出文件的文件夹?您建议的任何一种解决方案都可以。我必须将mdb提取出来,并使用zip文件夹名称和mdb名称重命名它们,或者将它们提取到单独的文件夹中,每个文件夹都以包含mdb的zip文件命名,这样就不必重命名它们了。在具体操作方式上,您绝对有把握我希望它是非常感谢你巨大的cudos:)我会在其他论坛上重新发布这个答案的链接再次感谢你这是一个非常好的努力,但我在尝试使用它时不断出错,非常感谢你的回答,尽管非常感谢:)@LoveToys,请告诉我在执行WinRAR或批处理文件时出现了哪些错误,好吗?根据您的问题,我尝试了两个ZIP文件,每个文件只包含
marketingdb.mdb
,在执行WinRAR或批处理文件时没有出现错误。您的ZIP文件是否包含的不仅仅是
marketingdb.mdb
?是的,有一个名为TDmarketingdb.accdb的数据库,但这不是错误所在,它没有提取或创建带有ZIP文件名的文件夹,也没有提取。我必须手动指向文件夹和文件,因此无法自动化。
@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