因此,我试图在批处理文件中保存和加载其字符串值具有空格的环境变量。如果变量没有空格,则代码可以正常工作,但是在关闭程序并从文件加载以前的保存后,带有空格的变量将无法正确显示。
以下是我要执行的操作的要点:
@echo off
setlocal enabledelayedexpansion
:menu
cls
echo What do you want to do?
echo 1. Set Variables
echo 2. Save and Exit
echo 3. Load
echo 4. Display
set /p input=
if %input%==1 goto set
if %input%==2 goto save
if %input%==3 goto load
if %input%==4 goto display
:set
set "a=apples"
set "b=big bananas"
goto display
:display
echo %a%
echo %b%
pause
goto menu
:save
(echo a=%a%)>>fruit.sav
(echo b=%b%)>>fruit.sav
echo saved!
pause
exit
:load
for /f %%a in (fruit.sav) do set %%a
goto display
在给定的示例中,如果文件被保存然后加载,变量引用%b%
最终将像big
一样回显。
是否有任何建议为什么不能正常工作?
答案 0 :(得分:1)
在您的for循环中,您必须添加"tokens=*"
,例如for /f "tokens=*" %%a in (fruit.sav) do set %%a
才能读取整行。您还可以设置"delims="
。 (如您所见,通常/F
会一直读取到行尾或空格为止)