1
我通常不使用批處理,所以請原諒我,如果這是顯而易見的。我不想在這一個上使用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
)
)
)
這絕對是我期待的方法,但目前它總是需要'else'路徑,就好像我根本沒有修改.c文件一樣。這是否依賴於某個版本的Windows/cmd.exe? –
@eznme不,它應該與XP,W7和W8一起工作。但是您可以在'if %%〜xI ...'之前添加'echo %%〜xI,%% I'來查看找到了什麼擴展名/文件。或者,你是否在空格,感嘆號或其他文件名中使用特殊字符? – jeb
只有a-to-z和一個點。我已經添加了echo以檢查檢查的順序是否正確,事實上,順序顯示,我正在改變整個時間的main.c被列出最後,迄今爲止非常好。 –