在TeamCity 9的一个构建步骤中运行两个批处理文件

时间:2016-02-26 06:39:24

标签: batch-file teamcity

我正在使用TeamCity 9.我想在一个构建步骤中一个接一个地运行两个批处理文件。

如果我在构建步骤中写这个:

BATCH_1.bat <arg1> <arg2> 
BATCH_2.bat <arg1> <arg2>

只有BATCH_1.bat被执行...我改变了序列,然后只执行了BATCH_2.bat。这意味着,只有构建步骤中的第一个批处理文件才会执行,控制将转移到下一个构建步骤。

当我分离构建步骤时,两个批处理文件都已执行。但是当我一步到位时,只有一个执行。

有趣的是ECHO语句在BATCH_1之前执行,而不是在-- Compute fragmentation information for all full-text indexes on the database SELECT c.fulltext_catalog_id, c.name AS fulltext_catalog_name, i.change_tracking_state, i.object_id, OBJECT_SCHEMA_NAME(i.object_id) + '.' + OBJECT_NAME(i.object_id) AS object_name, f.num_fragments, f.fulltext_mb, f.largest_fragment_mb, 100.0 * (f.fulltext_mb - f.largest_fragment_mb) / NULLIF(f.fulltext_mb, 0) AS fulltext_fragmentation_in_percent FROM sys.fulltext_catalogs c JOIN sys.fulltext_indexes i ON i.fulltext_catalog_id = c.fulltext_catalog_id JOIN ( -- Compute fragment data for each table with a full-text index SELECT table_id, COUNT(*) AS num_fragments, CONVERT(DECIMAL(9,2), SUM(data_size/(1024.*1024.))) AS fulltext_mb, CONVERT(DECIMAL(9,2), MAX(data_size/(1024.*1024.))) AS largest_fragment_mb FROM sys.fulltext_index_fragments GROUP BY table_id ) f ON f.table_id = i.object_id 之后执行。

是否有任何限制,只能在构建步骤中执行一个批处理文件?

1 个答案:

答案 0 :(得分:2)

TeamCity在使用命令步骤时的工作方式是将步骤中的所有命令放入单个.cmd文件中,并要求命令行解释程序执行它。

所以这不是TeamCity的限制,它是命令行解释器的限制。

要让解释程序返回到您的第一个批处理文件(生成的TeamCity),您必须调用其他批处理文件。

试试这个:

CALL BATCH_1.bat <arg1> <arg2> 
CALL BATCH_2.bat <arg1> <arg2>