通配符使用更新类似标题的7zip Sfx

时间:2016-09-17 13:14:31

标签: batch-file wildcard 7zip

我有4个不同的Sfx 7Zip文件,我需要根据情况下载和更新1个文件。

拉链的文件名略有不同,具体取决于内容和功能,但标题中都包含单词AUTO。

我使用此命令更新每个文件没有问题,但我希望简化更新代码。我有一个每个安装程序的行来更新某个文件但是我想只需要一行来更新所下载文件的任何版本。

"%~dp0Config\7za.exe" u "%~dp0Installer1Auto.exe" "%~dp0Config\config.cfg"
"%~dp0Config\7za.exe" u "%~dp0Installer2Auto.exe" "%~dp0Config\config.cfg"
"%~dp0Config\7za.exe" u "%~dp0Installer3Auto.exe" "%~dp0Config\config.cfg"
"%~dp0Config\7za.exe" u "%~dp0Installer4Auto.exe" "%~dp0Config\config.cfg"

无论我下载的sfx版本是什么,如何使用通配符(或类似代码)只有一行代码。

我在想下面的事情(但不起作用)......

"%~dp0Config\7za.exe" u "%~dp0*Auto*.exe" "%~dp0Config\config.cfg"

"或"

"%~dp0Config\7za.exe" u "%~dp0*Installer.exe" "%~dp0Config\config.cfg"

任何提示都会很棒,提前谢谢。

1 个答案:

答案 0 :(得分:1)

for /L %%q in (1,1,4) do "%~dp0Config\7za.exe" u "%~dp0Installer%%qAuto.exe" "%~dp0Config\config.cfg"

for %%q in (1 2 3 4) do "%~dp0Config\7za.exe" u "%~dp0Installer%%qAuto.exe" "%~dp0Config\config.cfg"

第一个开始将%%q设置为1然后将%%q增加1,直到达到4。

第二个将%%q依次设置为值1..4。

第二种方法的优点是,如果您要处理名称变体为Wibble, wobble, wubble, and flob的文件,那么它就像将代码更改为

一样简单
for %%q in (Wibble wobble wubble flob)...

此外,如果需要,可以对命令进行门控,如:

for /L %%q in (1,1,4) do if exist "%~dp0Config\7za.exe" "%~dp0Config\7za.exe" u "%~dp0Installer%%qAuto.exe" "%~dp0Config\config.cfg"

如果只存在2,则会避免执行341

要对目录%~dp0中找到的所有* .exe文件执行,请使用

FOR %%a IN ("%~dp0\*.exe") DO ECHO("%~dp0Config\7za.exe" u "%%~fa" "%~dp0Config\config.cfg"

如果需要,*.exe可以是installer*auto.exe