![](/img/trans.png)
[英]Extract 7-zip files into their containing directory from a batch file?
[英]Batch file to Extract a specific file from Zip folder and rename to include Zip name
我有大約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
將所有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
只需閱讀手冊頁:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.