windows - 从 Zip 文件夹中提取特定文件并重命名以包含 Zip 名称的批处理文件

标签 windows batch-file zip extract rename

我有大约 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

任何帮助都会很棒。

谢谢

最佳答案

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

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

从存档 archive.zip 中提取所有 SP_OUT.db 文件到 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

关于windows - 从 Zip 文件夹中提取特定文件并重命名以包含 Zip 名称的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20258069/

相关文章:

windows - 批量命令行弹出CD托盘?

python - 使用 zipfile 模块在 python 中创建带有压缩的 zip 文件

go - 如何根据字节大小比较文本的原始版本和 gzip 版本

java - APK java 文件在哪里?

windows - 在 Linux 的 Windows 子系统中运行 Docker 引擎?

python - 如何在未聚焦/最小化的窗口中模拟鼠标/键盘事件?

windows - 使用批处理根据分辨率重命名我的视频文件

c++ - 每次我为我的 C++ 程序提供大量输入集时,我的 DOS 都会崩溃

c# - Application.run(Windows) 与 Application.run()

java - 合并这 2 批查询?