2013-05-22 45 views
0

我有一個相當簡單的問題,我似乎無法包住我的頭。目前我正在嘗試通過批量編寫遊戲(我知道我應該使用其他更好的方法,但我不是)。我的問題是,它沒有按時更新,但似乎是一切背後的轉折點。在目前這一刻,只有等到惠普未被正確讀取,直到發出另一個命令爲止。批處理程序沒有正確更新文本文件

這是

`:damageAdjuster 
cls 
for /f "delims=" %%a in (test.txt) do (
    set line=%%a 
    echo !line! 
    set /a L=!L!+1 
) 

echo Testing Damage 
echo. 
echo 1) Deal Damage to HP 
echo 2) Heal HP 

set /a healthPoints=!line! 
set /a hardHealth=17 
set /a hostileDamage=%random%%%6 +1 
set /a healthHeal=%healthPoints% +6 
set /a healthDamage=%healthPoints%-%hostileDamage% 

set input= 
set /p input=Well...?: 
if %input%==1 echo %healthDamage% >test.txt 
if %input%==2 echo %healthHeal% >test.txt 

if %healthPoints% gtr %hardHealth% (
echo %hardHealth% >test.txt 
) 

goto damageAdjuster` 

L被指定,並且延遲擴展被啓用的代碼。當然,我可能會以這種錯誤的方式來解決這個問題,但這正是我在零批處理中獲得零經驗的原因。任何幫助,將不勝感激。此外,如果沿着這個線路實際工作,它也可以用於記憶庫存等?

+0

恭喜您試圖將其作爲批處理文件執行此操作。不過,我不明白你究竟在問什麼。 – Gabe

+0

而不是使用for循環嘗試一個do/while循環(我知道批處理'本地'支持do/while但有一種方法)[批處理如何...模仿while循環](http:// www .robvanderwoude.com/battech_while_loops.php) – wpenton

+0

'set/a L + = 1'? – Endoro

回答

0

您的代碼與您描述的完全相同。我認爲你限制健康的問題在於你在最後的回聲中測試了錯誤的變量 - 你需要測試你正在寫出的內容,而不是當前的健康值。考慮修改您的代碼,如下所示:

if %input%==1 echo %healthDamage% >test.txt 
if %input%==2 (
    echo %healthHeal% >test.txt 

    if %healthHeal% gtr %hardHealth% (
    echo %hardHealth% >test.txt 
) 
) 
+0

它的工作原理!我不能夠感謝你,先生。 – RandomScript