【问题标题】:Unzip Files To Full Path using BAT file使用 BAT 文件将文件解压缩到完整路径
【发布时间】:2014-07-21 09:49:00
【问题描述】:

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

【问题讨论】:

  • 有一点不清楚:您是想将每个 zip 文件提取到一个单独的文件夹中,并使用该 zip 文件的名称,还是您需要将所有文件提取到与输出相同的文件夹中文件重命名了吗?
  • 您建议的任何一种解决方案都行得通这样就不必重命名它们。

标签: batch-file


【解决方案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\来表示。

【讨论】:

  • 在我希望它成为的样子方面非常棒,谢谢你这么多的赞美:) 生病在其他论坛上重新发布这个答案的链接,再次感谢你
【解决方案2】:

你可以使用命令

"C:\Program Files\WinRAR\WinRAR.exe" e -ad "Path To\ZIP Files\*.zip" "Path To\Target\Folder\"

使用此命令 WinRARPath 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"
)

【讨论】:

  • 这是一个非常好的努力,但我在尝试使用它时不断出错,非常感谢您的回答,尽管非常感谢:)
  • @LoveToys,请告诉我您在执行 WinRAR 或批处理文件时遇到了哪些错误?根据您的问题,我尝试了 2 个仅包含 marketingdb.mdb 的 ZIP 文件,并且在执行 WinRAR 或批处理文件时没有发生错误。您的 ZIP 文件是否不仅仅包含 marketingdb.mdb
  • 是的,有一个名为 TDmarketingdb.accdb 的数据库,但这不是错误,它没有使用 zip 文件名提取或创建文件夹,也没有提取我必须手动指向文件夹和文件,因此无法自动化。
猜你喜欢
  • 2011-12-12
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2014-03-23
  • 2019-11-29
  • 1970-01-01
相关资源
最近更新 更多