批处理脚本列表检查

Batch Script List Checking

我正在开发 Windows 7 命令行批处理脚本来自动化我们的构建过程。一些需要构建的项目依赖于其他项目。正常过程(假设没有依赖项)是从存储库根目录执行 dir /AD /B 以获取要编译的项目的名称。 (这适用于我们正在使用的文件夹结构和命名约定。)我想做的是添加一个文件,buildorder.txt,为依赖项指定任何必要的构建顺序 only,其中可能包括也可能不包括所有需要构建的项目。

下面是一些伪代码来演示我要完成的工作:

if exist buildorder.txt (
  for /F %%i in buildorder.txt do (
    rem build each project in order specified in buildorder.txt
  )
)

for /F %%i in ('dir /AD /B') do (
  rem build all of the remaining project that have not already been built
)

请记住,为第二个 for 循环发现的一些(或可能是所有)项目已经在第一个 for 循环中处理过,我宁愿不构建那些第二次项目。

任何关于如何实现这一点的想法都将不胜感激!谢谢!

对于第二个 for /F 循环,执行

findstr /i "%%i" buildorder.txt >NUL || ( rem build %%i )

如果在 buildorder.txt 中找不到 %%iconditional execution 评估为 false 并继续构建。