1

次のようなメニューを作りたかったのです。

mode 59, 300
set line===========================================================
echo %line%
echo         Tool colour menu!
echo %line%
Echo.
echo     Choose your BACKGROUND colour!
echo.
echo         1  =   Blue        
echo         2  =   Green       
echo         3  =   Aqua        
echo         4  =   Red     
echo         5  =   Purple      
echo         6  =   Yellow      
echo         7  =   White
echo         8  =   Gray
echo         9  =   Light Blue
echo         10 =   Light Green
echo         11 =   Light Aqua
echo         12 =   Light Red
echo         13 =   Light Purple
echo         14 =   Light Yellow
echo         15 =   Bright White
echo.
set /p background_app=Enter the number of the colour that you want for background (or enter for default):

そのメニューは background_app 変数になります!

その後:

mode 59, 300
set line===========================================================
echo %line%
echo         Tool color menu!
echo %line%
Echo.
echo     Choose your TEXT color!
echo.
echo         1  =   Blue        
echo         2  =   Green       
echo         3  =   Aqua        
echo         4  =   Red     
echo         5  =   Purple      
echo         6  =   Yellow      
echo         7  =   White
echo         8  =   Gray
echo         9  =   Light Blue
echo         10 =   Light Green
echo         11 =   Light Aqua
echo         12 =   Light Red
echo         13 =   Light Purple
echo         14 =   Light Yellow
echo         15 =   Bright White
echo.
set /p text_app=Enter the number of the color that you want for text (or enter for default):

これは変数 %text_app% になります

ユーザーが入力した後、この変数をtxtファイルに保存したかったので、ユーザーがツールを実行した場合に備えて後で値を取得できます(ユーザーが選択している色を保持するため)

しかし、現在私は試しました:

:saveVars
(
ECHO Backuground=%background_app%
ECHO Text=%text_app%
) >colors.txt
GOTO :EOF

たとえば、次のように保存します。

Background=1
Text=7

そして今、ジレンマが発生します。これは、colors.txt から値のみを読み取り、変数として次のように設定したかったためです。

%background_apptxt%
%text_apptxt%

背景とテキストの値のみを読み取るにはどうすればよいですか? ご協力いただきありがとうございます :)


FOR を理解するのはとても簡単ですが、例えば:

Colors.txt には次の行が含まれています。

Background=1
Text=2

たとえば、このバッチを使用してテストバッチを作成しました。

@echo off
set background_app=black
set text_app=green

:saveVars
(
ECHO Background=%background_app%
ECHO Text=%text_app%
) >colors.txt

for /f "tokens=1,2 delims==" %%A in (colors.txt) do set "%%A_app=%%B"

%background_app% をエコーし​​、もう一度 %text_app% をエコーするにはどうすればよいですか? ありがとうございました

4

2 に答える 2

1

FOR /F ループを使用して、各行を読み取り、解析します。トークン区切り文字を に設定する=と、2 つのトークンを取得できます。

for /f "tokens=1,2 delims==" %%A in (colors.txt) do set "%%A_app=%%B"

テキスト ファイルに各変数の完全な名前が含まれている場合、コードはさらに簡単になります。次に、単に使用できます

for /f "delims=" %%A in (colors.txt) do set "%%A"
于 2013-02-07T05:18:29.103 に答える
0

iniから保存して読み取るための代替手段がよく見つかりました:

http://www.horstmuc.de/wbat32.htm#inifile

誰かが私と同じくらい便利だと思うことを願っています:)

于 2013-02-07T19:07:54.723 に答える