我们在固定目录中只有一个文件,名称为database-x.x.x.zip,其中x.x.x是可以更改的版本号。
[我们想创建一个将解压缩该文件的批处理脚本-我们可以使用7zip从批处理脚本解压缩文件,但是我们需要能够将文件名传递给7zip-如何确定文件名批处理脚本给出的文件名将不会是常量?
更新
意识到,我应该提供更多详细信息。脚本需要解压缩存档,然后运行存档中的ant文件:
"C:\Program Files\7-Zip\CommandLine\7za.exe" x %FILE%
ant -f %UNZIPPED_ARCHIVE_DIR%\db.xml
使用梦幻般的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的选项
来源: 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
且不应提取的zip),则需要为命令行找到一个正则表达式匹配器在Windows中-这是可能的。 -或者-如果将版本号降低到一位数字,则可以使用?
单字符匹配。
您可能还想添加一些检查(在7z...
行之前),以确保他的文件夹尚不存在,如果存在,请执行某些操作。
powershell Expand-Archive x.x.x.zip "where_you_want_to_unzip"
如果您需要使用7zip解压缩,那么我无法像通过批处理文件解压缩一样来帮助您,我总是只使用它。