バージョン番号を増やすためにバッチファイルを書くつもりですが、 "for/f"とその動作について混同しています。コマンドプロンプトを使用してテストすると、バッチファイルです。これで私を助けてください。 は、ここに私のバッチファイルバッチファイルを使ってファイルにバージョン番号を読み書きする
for /f "tokens=2,3 " %%i in (version.h) do (
set /a number=%%j+1
echo %%i
echo %%j
echo %number%
if %%i==REVISION (
echo line1
echo #define %%i "%number%" >> temp.file
) else (
echo line2
echo #define %%i %%j >> temp.file
)
)
del /q version.h
ren temp.file version.h
だと、ここでバッチファイルのみが最初の実行(の#define REVISION「243」)で正しい結果を生成することができます
#define MAJOR "1"
#define MINOR "0"
#define REVISION "242"
私version.hをだ、と奇妙なを持っています2回目の実行結果(#define REVISION "0")。 3回目の結果は正しいですが(#define REVISION 244)、4回目の実行は再び奇妙になります(#define REVISION "1"など)。 正しい文字列を解析しなかったようです コマンドプロンプトで「for /?」と入力してもヘルプメッセージを読みましたが、それでも理解できない場合は、この手助けをしてください。
[遅延拡張問題](http://stackoverflow.com/a/30284028/2152082) – Stephan
コメントありがとうございます!私は最終的に私の問題の根本原因を見つけました! – lesner