【问题标题】:Batch file to Extract a specific file from Zip folder and rename to include Zip name批处理文件以从 Zip 文件夹中提取特定文件并重命名以包含 Zip 名称
【发布时间】:2013-12-14 00:22:40
【问题描述】:

我有大约 300 个 zip 文件,它们都包含一个名为 SP_OUT.db 的文件,该文件包含在 zip 中的一个文件夹中。这些文件夹本身可能会或可能不会被压缩。 我想解压缩文件 SP_OUT.db 并放在一个新文件夹中。但是,由于所有文件的名称相同,我想重命名它们以包含它来自的 ZIP 的名称。

例如

A11_21156_AHDW1_1.zip 解压 SP_OUT.db 并重命名为 A11_21156_AHDW1_1SP_OUT.db A06_21047_APERCLASH1_1.zip 解压 SP_OUT.db 并重命名为 A06_21047_APERCLASH1_1.db

对此的任何帮助都会很棒。

谢谢

【问题讨论】:

  • 您使用哪个程序从 zip 文件中提取?压缩? 7压缩包? Winrar?

标签: windows batch-file zip extract rename


【解决方案1】:

您使用的是什么操作系统? 如果您不介意安装 7zip 程序,看起来应该有办法做到这一点。 然后,您可以合并如下所示的 7zip 命令,仅提取 SP_OUT.db 文件。

7z e archive.zip -oc:\soft SP_OUT.db -r

将所有 SP_OUT.db 文件从存档 archive.zip 提取到 c:\soft 文件夹

可能需要尝试使用x 参数而不是e

来源:http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract.htm

.

编辑:制定了一个脚本来提取每个文件。 但是我还没有弄清楚如何将原始 zip 名称添加到提取的 SP_OUT.db 文件名的开头。

我在下面的脚本中标记了您需要执行此操作的位置,并在其后添加了“REN”(重命名)以更改提取文件的名称。

@ECHO off
TITLE All your SP_OUT.db are belong to us
SETLOCAL ENABLEDELAYEDEXPANSION

REM Set your working directories below.
set targetFile=SP_OUT.db
set sourceDir=%CD%\source
set outputDir=%CD%\output
set 7ziplocation=C:\Progra~1\7zip\7z.exe

:start
FOR /f "delims=" %%a IN ('dir/s/b/a-d "%sourcedir%\*.zip"') DO (
 %7ziplocation% e %%a -o%outputDir% SP_OUT.db -r
 CALL :process2 %%a
  )
GOTO :eof

:process2
SET "fdir=%1"
REM ********* %fdir% will be the full path including filename of original zip file.
REM ********* Work out how to get just zip file name and put save to variable here.
REN %outputDir%\SP_OUT.db %put_the_above_zip_name_here%_SP_OUT.db
GOTO :eof

【讨论】:

  • @user2446846 请记住选择此答案是否有帮助
【解决方案2】:

只需阅读手册页:

7-Zip [64] 9.20 版权所有 (c) 1999-2010 Igor Pavlov 2010-11-18 用法:7z [...] [...] [] a:将文件添加到存档 b:基准 d:从存档中删除文件 e:从存档中提取文件(不使用目录名) l:列出归档的内容 t:测试存档的完整性 u:更新文件到存档 x:具有完整路径的提取文件 -ai[r[-|0]]{@listfile|!wildcard}:包含档案 -ax[r[-|0]]{@listfile|!wildcard}:排除档案 -bd:禁用百分比指示器 -i[r[-|0]]{@listfile|!wildcard}:包含文件名 -m{Parameters}:设置压缩方法 -o{Directory}:设置输出目录 -p{密码}:设置密码 -r[-|0]:递归子目录 -scs{UTF-8 |赢 | DOS}:为列表文件设置字符集 -sfx[{name}]:创建 SFX 存档 -si[{name}]:从标准输入读取数据 -slt:显示 l(列表)命令的技术信息 -so:将数据写入标准输出 -ssc[-]:设置敏感大小写模式 -ssw:压缩共享文件 -t{Type}:设置存档类型 -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]:更新选项 -v{Size}[b|k|m|g]:创建卷 -w[{path}]:分配工作目录。空路径表示临时目录 -x[r[-|0]]]{@listfile|!wildcard}:排除文件名 -y:对所有查询假设是

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2012-07-23
    • 2013-10-30
    • 2013-03-06
    • 2021-06-23
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多