批处理脚本列表检查
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
中找不到 %%i
,conditional execution 评估为 false 并继续构建。
我正在开发 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
中找不到 %%i
,conditional execution 评估为 false 并继续构建。