2013-07-03 36 views
2

這是我的腳本。每當玩家轉到腳本的這部分時,就會說失蹤的運營商。但它只是第一次這樣說。幫幫我。批處理遊戲中缺少運算符

:M221 
(
set /p Gold=<"%CD%\Data Files\gold.dat" 
) 
set /a gold=%gold%+60 
echo You have earned 60 gold today. Time to go home and go to bed. 
pause 
cls 
goto home3 

:M321 
(
set /p Gold=<"%CD%\Data Files\gold.dat" 
) 
set /a gold=%gold%+80 
echo You have earned 80 gold today. Time to go home and go to bed. 
pause 
cls 
goto home3 

:M421 
(
set /p Gold=<"%CD%\Data Files\gold.dat" 
) 
set /a gold=%gold%+150 
echo You have made a spectacular sword and earned 150 gold today. Time to go home and go to bed. 
pause 
cls 
goto home3 
+1

真的,密切的選民?無關?批處理文件代碼與編程無關的確切方式是什麼? – paxdiablo

+1

不幸的是,似乎有一羣密友在機械上運用他們的無名特權。可能狂熱的「使用PowerShell」異端。 – Magoo

回答

2

這是因爲黃金可能不是您第一次通過時的數字!

+0

起初我也這麼想。但大多數值不會導致錯誤。例如,未定義是OK,alpha值是OK。關於唯一失敗的是數學運算符,而不是'+'和'-'。 – dbenham

+0

我寧可懷疑,第一遍中沒有定義%gold%。用'echo%gold%'從文件讀取後檢查內容' – Stephan

+0

正是我的問題是^ – user2544765

3

沒有足夠的信息。

我會檢查gold.dat的內容。

如果文件不存在,它會給你一個不同的迴應。

如果它是空的(一個零字節的文件),或者只包含一個空格newl-line或一個新行,那麼代碼將很愉快地工作。

如果文件包含,和一個換行符,您將收到您報告的錯誤。

+0

+1,大多數值不會導致錯誤。其他導致錯誤的值是運算符,例如'/','''','''','''''',''''''' – dbenham

+0

當您退出遊戲時,那裏。但是當它開始的時候,它會到達任何地方,當你工作的時候,它會被搞砸 – user2544765

+0

在每個'set/a'之前添加一個'@echo on'聲明,看看到底發生了什麼。你應該在每個'cls'前面放一個'PAUSE'或者一個'暫停和回顯',當你迴應'ENTER'時將會把'echo'關掉。 – Magoo

3

您應該發佈"%CD%\Data Files\gold.dat"的內容,並且,btw。你應該從路徑中刪除零件%CD%\,這不是壞事。

+3

這個答案可能是更好的評論。 '%CD%\'部分是完全不必要的,但它可以被認爲是「有意義的」。結果是相同的或不相同。 – dbenham