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

使用奇妙的 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 回答
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 中为命令行找到一个正则表达式匹配器 - 这是可能的。那 - 或者 - 如果您将版本号保持在一位数,那么您可以使用?单字符匹配。

您可能还想添加一些检查(7z...在行之前)以确保他的文件夹不存在,如果存在则做一些事情。

于 2010-09-13T13:54:02.883 回答
0
powershell Expand-Archive x.x.x.zip "where_you_want_to_unzip"

如果您需要使用 7zip 解压缩,那么我无法帮助您,因为通过批处理文件解压缩我总是使用它。

于 2020-05-05T00:56:53.667 回答