2013-02-07 48 views
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% 

如何我可以只讀取Background和Text的值嗎?感謝您的幫助:)


那麼這是很容易理解的,但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_ap p%?謝謝

回答

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"