1
我有一個批處理腳本,編譯和運行一個Java程序,因爲它是這樣做的,它打印任務啓動時間的時間戳。我注意到:printDate
函數在最後被稱爲額外時間,但:exit
應該在打印完成「完成...」後結束腳本。Windows批處理函數被調用一個額外的時間
@echo off
set PRGM=Foo
cls
call :printDate
echo Compiling...
javac %PRGM%.java
call :printDate
echo Executing...
java %PRGM%
call :printDate
echo Results...
type output.txt
call :exit
:: ----------------------------------------------------------
:: Functions
:: ----------------------------------------------------------
:printDate
for /f "tokens=2-4 delims=/ " %%a in ('echo %DATE%') do (set mydate=%%c/%%a/%%b)
for /f "tokens=1-3 delims=/:./ " %%a in ('echo %TIME%') do (set mytime=%%a:%%b:%%c)
echo|set /p=[%mydate% %mytime%]
goto:eof
:exit
call:printDate
echo Done...
goto:eof
這裏是我的輸出
[2013/10/17 21:26:11] Compiling...
[2013/10/17 21:26:12] Executing...
[2013/10/17 21:26:12] Results...
2
6
6
5
[2013/10/17 21:26:12] Done...
[2013/10/17 21:26:12]
編輯
如果有人有興趣,這是我工作的腳本:http://pastebin.com/xfwStvNK。我的Java程序生成輸出文件,腳本生成輸入並在編譯和運行程序後打印輸出。
所以我只是在節目的最後叫'指定一個標籤:Exit'因爲我不希望腳本殺死命令行。這工作,非常感謝。這裏是我更新的腳本:http://pastebin.com/xfwStvNK –
有更好的;比'goto:eof'更有效的函數返回方式? –
@Mr。 Polywhirl不是,但你爲什麼試圖用「更好,更高效」的意思呢?去EndOfFile是唯一的方法,同時批處理是一種「批處理」語言。請隨意將此答案標記爲「已接受」如果代碼已解決您的問題,請感謝您的閱讀並原諒我的英語。 – ElektroStudios