0

「Score.txt」という別のファイルでハイスコアをカウントするバッチゲームを作成しています。そのファイルでは、数字を読み取りますが、ゲームに勝ったときに、次に大きい数字でオーバーライドする必要があります。EG .. 0は数字です、私はゲームに勝ちました、今それは1を読みます。

これまでのところ、これはハイスコアの私のコードです...

:Score
SetLocal EnableDelayedExpansion
set score=
for /F "delims=" %%i in (Score.txt) do set score=!score! %%i
set /a %score%=%score%+1 
echo %score% >score.txt
exit

しかし、「Score.txt」は、私が勝った後、ECHOがオンになっている場合にのみ読み取ります。

4

2 に答える 2

2

私はこれがあなたがやろうとしていることだと思います:

:Score
SetLocal EnableDelayedExpansion
set score=
for /F "delims=" %%i in (Score.txt) do set score=%%i
set /a score=!score!+1 
echo !score! >score.txt
于 2012-09-22T07:05:59.147 に答える
2

ジェームズL.の答えは確かに問題を解決しますが、オリジナルが機能しなかった理由を説明していません。

James L.がコメントで指摘したように、!score!これはFORステートメントでは必要ありませんが、定義されていないため害はありません。

この問題では、拡張を遅らせる必要はありません。

元のコードが失敗した理由は、の最初の拡張でしたset /a %score%=%score%+1。そのステートメントは、名前として数値を持つ変数を作成します。set /a score=%score%+1、、、、またはset /a score=score+1を読む必要がありますset /a score+=1

FOR/Fを使用する代わりの方法があります

@echo off
set "score="
<"Score.txt" set /p "score="
set /a score+=1
>"Score.txt" echo %score%
于 2012-09-22T18:35:19.350 に答える