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