2011-04-25 45 views
2

我需要一批從文件中讀取一個數字,它增加並保存它放回這個文件......這是我想出了:這個批處理腳本有什麼問題?

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

IF EXIST script\BUILDVERSION (
    SET /p input = <script\BUILDVERSION 
    SET /a result=%input%+1 
    ECHO %result% > script\BUILDVERSION 
) ELSE (
    ECHO 0 > script\BUILDVERSION 
) 

起初,它在一種奇怪的方式工作,從文件中讀取數字的結果似乎是一個小的隨機數,總和的結果似乎是隨機的......我不知道我做了什麼,但現在它甚至沒有讀取文件中的數字變量...

在此先感謝幫助!

+1

*任何*批處理腳本的問題是它們*是批處理腳本*。 =) – 2011-04-25 20:09:30

+0

嗯,我同意,我永遠不會浪費時間與它的樂趣,但我需要這個螞蟻構建腳本在Windows下工作(Linux的bash對手花了我5分鐘實現沒有bash腳本的經驗) – apirogov 2011-04-25 20:17:12

+1

可以使用vbscript嗎?這比批處理腳本更糟糕。 – Luke 2011-04-25 20:42:15

回答

4

而不是%input%%result%,嘗試使用!input!!result!。這在使用延遲擴展時似乎效果更好。另外,從文件中讀取時請確保沒有任何不必要的空格。你最終會得到:

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

IF EXIST script\BUILDVERSION (
    SET /p input=<script\BUILDVERSION 
    SET /a result=!input!+1 
    ECHO !result! > script\BUILDVERSION 
) ELSE (
    ECHO 0 > script\BUILDVERSION 
) 
+0

謝謝!感嘆號做到了.. :) – apirogov 2011-04-25 21:33:01

+1

在算術賦值中,變量可以簡單地通過它們的名字來引用,沒有'!'或'%'s。因此'!input!'可以用'input'替換。 – 2011-04-25 22:18:26