Windows批处理文件,用于迭代调用其他批处理文件

时间:2009-05-06 15:47:13

标签: batch-file

考虑包含以下文件的目录结构:

\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,其中包含:

  1. 将环境名称作为参数;然后
  2. 依次执行基线安装脚本和每个补丁脚本。
  3. 批处理文件应自动执行稍后添加的任何其他修补程序。

    基本上我需要做一些事情:

    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
    

3 个答案:

答案 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文件的完整路径。