我正在使用Windows 7命令行批处理脚本来自动化我们的构建过程。一些需要构建的项目依赖于其他项目。正常进程(假设没有依赖关系)是从存储库根目录执行dir /AD /B
以获取要编译的项目的名称。 (这适用于我们正在使用的文件夹结构和命名约定。)我想要做的是添加一个文件buildorder.txt,以指定依赖仅的任何必要的构建顺序,这可能是或者可能不包括所有需要建造的项目。
这是一些伪代码,用于演示我想要完成的任务:
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
循环中处理过了,我宁愿不构建这些项目第二次。
对于如何实现这一点的任何想法将不胜感激!谢谢!
答案 0 :(得分:1)
对于第二个for /F
循环,请执行
findstr /i "%%i" buildorder.txt >NUL || ( rem build %%i )
如果在%%i
中找不到buildorder.txt
,则conditional execution会评估为false并继续构建。