0

固定ディレクトリに単一のファイルがあり、名前database-x.x.x.zipx.x.x変更可能なバージョン番号です。

このファイルを解凍するバッチ スクリプトを作成したい - 7zip を使用してバッチ スクリプトからファイルを解凍できますが、ファイル名を 7zip に渡す必要があります - バッチ スクリプトでファイル名を特定するにはどうすればよいですかファイル名が一定ではないことを考えると?

スクリプトは、アーカイブを解凍してから、アーカイブにあった ant ファイルを実行する必要があります。

"C:\Program Files\7-Zip\CommandLine\7za.exe" x %FILE%
ant -f %UNZIPPED_ARCHIVE_DIR%\db.xml 
4

3 に答える 3

0

ソース: extract.bat :

@echo off
::: extract.bat - Extract all database-*.zip files in the given folder
::: usage: extract.bat [folder]
:::     folder - Search for files here (defaults to current folder)

set search=database-*.zip /b
if "%~1" neq "" set search=%1\%search%

for /f "tokens=*" %%f in ('dir %search%') do (
  7z x %%f %%~nf
  ant -f %%~nf\db.xml
)

バージョン フォルダーの形式に従っていないデータベースの zip を本当に除外する必要がある場合 (たとえば、呼び出されdatabase-old.zipて抽出されるべきではないものがある場合)、Windows のコマンド ライン用の正規表現マッチャーを見つける必要があります。可能。または、バージョン番号を 1 桁に抑えると、?1 文字一致を使用できます。

7z...フォルダーがまだ存在しないことを確認し、存在する場合は何かを行うために、(行の前に) いくつかのチェックを追加することもできます。

于 2010-09-13T13:54:02.883 に答える
0

幻想的な for ループを使用する

コマンドラインから

for /f "tokens=*" %f in ('dir database-?.?.?.?.zip /b') do 7za xxx %f

バッチファイルから

for /f "tokens=*" %%f in ('dir database-?.?.?.?.zip /b') do 7za xxx %%f

xxx は 7zip に渡すオプションです

于 2010-09-13T13:39:40.010 に答える