批处理文件从Zip文件夹中提取特定文件并重命名为包含邮编名称
我有大约300个zip文件,它们都会有一个名为SP_OUT.db的文件,其中包含压缩文件夹中的一个文件夹。这些文件夹本身可能会或可能不会被压缩。 我想解压文件SP_OUT.db并放置在一个新文件夹中。但是,由于所有文件都是相同的名称,我想将其重命名为包含其来源的ZIP的名称。批处理文件从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
任何帮助,这将是巨大的。
感谢
刚读手册页:
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Usage: 7z [...] [...] [] a: Add files to archive b: Benchmark d: Delete files from archive e: Extract files from archive (without using directory names) l: List contents of archive t: Test integrity of archive u: Update files to archive x: eXtract files with full paths -ai[r[-|0]]{@listfile|!wildcard}: Include archives -ax[r[-|0]]{@listfile|!wildcard}: eXclude archives -bd: Disable percentage indicator -i[r[-|0]]{@listfile|!wildcard}: Include filenames -m{Parameters}: set compression Method -o{Directory}: set Output directory -p{Password}: set Password -r[-|0]: Recurse subdirectories -scs{UTF-8 | WIN | DOS}: set charset for list files -sfx[{name}]: Create SFX archive -si[{name}]: read data from stdin -slt: show technical information for l (List) command -so: write data to stdout -ssc[-]: set sensitive case mode -ssw: compress shared files -t{Type}: Set type of archive -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName]: Update options -v{Size}[b|k|m|g]: Create volumes -w[{path}]: assign Work directory. Empty path means a temporary directory -x[r[-|0]]]{@listfile|!wildcard}: eXclude filenames -y: assume Yes on all queries
我正在使用7zip – user2446846
什么操作系统您使用的? 看起来应该有办法做到这一点,如果你不介意安装程序7zip。 然后,您可以合并下面的7zip命令来仅提取SP_OUT.db文件。
7z e archive.zip -oc:\soft SP_OUT.db -r
提取物存档archive.zip所有SP_OUT.db文件到c:\文件夹中软
可能需要使用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请记住选择此答案是否有帮助 – Durry42
您使用哪个程序从zip文件中提取?压缩? 7zip的? WinRAR的? – foxidrive