考虑包含以下文件的目录结构:
\1.3\Baseline\GeneratedScripts\One\FullInstall.cmd
\1.3\Baseline\GeneratedScripts\Two\FullInstall.cmd
\1.3\Baseline\GeneratedScripts\Three\FullInstall.cmd
\1.3\Patches\Patch1\GeneratedScripts\One\FullInstall.cmd
\1.3\Patches\Patch1\GeneratedScripts\Two\FullInstall.cmd
\1.3\Patches\Patch1\GeneratedScripts\Three\FullInstall.cmd
\1.3\Patches\Patch2\GeneratedScripts\One\FullInstall.cmd
\1.3\Patches\Patch2\GeneratedScripts\Two\FullInstall.cmd
\1.3\Patches\Patch2\GeneratedScripts\Three\FullInstall.cmd
\1.3\Patches\Patch3\GeneratedScripts\One\FullInstall.cmd
\1.3\Patches\Patch3\GeneratedScripts\Two\FullInstall.cmd
\1.3\Patches\Patch3\GeneratedScripts\Three\FullInstall.cmd
我想构建一个Windows批处理文件InstallEnvironment.cmd
,其中包含:
批处理文件应自动执行稍后添加的任何其他修补程序。
基本上我需要做一些事情:
for %%_ in (1.3\**\GeneratedScripts\%%1\FullInstall.cmd) do cal %%_
但是我不确定通配符系统是否足够允许这个,因为我没有获得**
目录通配符的任何匹配。
例如,使用参数“Two”调用应按顺序执行以下脚本:
\1.3\Baseline\GeneratedScripts\Two\FullInstall.cmd
\1.3\Patches\Patch1\GeneratedScripts\Two\FullInstall.cmd
\1.3\Patches\Patch2\GeneratedScripts\Two\FullInstall.cmd
\1.3\Patches\Patch3\GeneratedScripts\Two\FullInstall.cmd
答案 0 :(得分:2)
这将根据参数执行子文件夹中的所有* .cmd文件:
for /r 1.3\ %%X in (GeneratedScripts\%1\*.cmd) do call "%%X"
答案 1 :(得分:0)
根据我的经验,%1替换在目录名称中起作用。
这应该有效:
InstallEnvironment.bat:
\1.3\Baseline\GeneratedScripts\%1\FullInstall.cmd \1.3\Patches\Patch1\GeneratedScripts\%1\FullInstall.cmd \1.3\Patches\Patch2\GeneratedScripts\%1\FullInstall.cmd \1.3\Patches\Patch3\GeneratedScripts\%1\FullInstall.cmd
编辑此批处理文件以按顺序添加其他修补程序,并且它可以正常工作。如果需要在多个目录上运行相同的批处理文件,请创建另一个批处理文件:
call InstallEnvironment.bat %1 call InstallEnvironment.bat %2
答案 2 :(得分:0)
如果要在后台运行批处理文件,请使用vbs文件在后台运行该bat文件。 这是代码:
CreateObject(“Wscript.Shell”)。运行“”“”& Wscript.Arguments(0)及“” “”,0,假
将其完全保存为invisible.vbs(或任何内容),然后创建另一个批处理文件,该文件将调用批处理文件以在后台运行它。 第二个批处理文件的代码是:
wscript.exe“invisible.vbs”“Your_Batch_File.bat”
然后运行第二个批处理文件。
注意:应在您的计算机上启用WSH,并且invisible.vbs文件和第二个批处理文件应位于同一文件夹中。如果没有,那么您可以在第二个批处理文件的脚本中提供invisible.vbs文件的完整路径。