批处理文件使用系统变量从文本文件中读取
问题描述:
我正在尝试编写一个批处理文件,该文件读取包含特定行的文本文件,并将其作为变量传递。这里是我的代码:批处理文件使用系统变量从文本文件中读取
SetLocal EnableDelayedExpansion
for /f "delims== tokens=1,2" %%G in (c:\temp\fred.txt) do (
if "%%G"=="FRED" (set %%G=%%H)
)
set FRED=%FRED%
echo %FRED%
set FRED=%USERNAME%
echo %FRED%
pause
的FRED.txt的内容是:
ERIC=PATATE
FRED=%USERNAME%
当我运行此我得到:
C:\TEMP>SetLocal EnableDelayedExpansion
C:\TEMP>for /F "delims== tokens=1,2" %G in (c:\temp\fred.txt) do (if "%G" ==
"FRED" (set %G=%H))
C:\TEMP>(if "ERIC" == "FRED" (set ERIC=PATATE))
C:\TEMP>(if "FRED" == "FRED" (set FRED=%USERNAME%))
C:\TEMP>set FRED=%USERNAME%
C:\TEMP>echo %USERNAME%
%USERNAME%
C:\TEMP>set FRED=fred
C:\TEMP>echo fred
fred
C:\TEMP>pause
Press any key to continue . . .
所以,当我做我的for循环我得到%USERNAME%而不是像常规集FRED =%USERNAME%应该给我的fred。谁能帮我?
答
您需要另一级解析来评估%username%
- 正如您所做的那样,它只是从文件中读取文字字符串%username%
。你可以做到这一点,例如一个call
SetLocal EnableDelayedExpansion
for /f "delims== tokens=1,2" %%G in (t.txt) do (
if "%%G"=="FRED" (call set %%G=%%H)
)
set FRED=%FRED%
echo %FRED%
set FRED=%USERNAME%
echo %FRED%
pause
+0
完美谢谢。 – Ne0x222
你的结果是我所期望的。请明确您的期望并告诉我们“用户名”是什么。 – Magoo