我正在使用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
之后执行。
是否有任何限制,只能在构建步骤中执行一个批处理文件?
答案 0 :(得分:2)
TeamCity在使用命令步骤时的工作方式是将步骤中的所有命令放入单个.cmd
文件中,并要求命令行解释程序执行它。
所以这不是TeamCity的限制,它是命令行解释器的限制。
要让解释程序返回到您的第一个批处理文件(生成的TeamCity),您必须调用其他批处理文件。
试试这个:
CALL BATCH_1.bat <arg1> <arg2>
CALL BATCH_2.bat <arg1> <arg2>