我通常不使用批处理,所以如果这很明显,请原谅我。我不希望在这个上使用 Make,但如果必须的话我会。但是让我们看看我们是否可以解决这个问题:
它通过文件夹中的(仅)137 个 .c 将它们的修改日期与它们的 .o 进行比较,如果更新则重新编译。
内部 for 循环只是将较新文件的名称放入%%I
变量中,因此它不应该具有二次运行时间,但问题是它太慢了。即使不需要重新编译也需要 10 秒,它只是循环和排序每一对。
for %%f in (*.c) do (
For /F "Delims=" %%I In ('dir /b /OD %%~nf.o %%~nf.c ^| more +1') do (
if %%I == %%~nI.c (
REM recompile the file
) else (
REM skip it
)
)
)