我想知道如何使用Findstr命令查找文件中的文本,并在此处将其作为变量:
@echo off
for /F "delims=" %%a in ('findstr /I /m "100" Config.dat') do set "Variable=%%a"
cls
if %errorlevel% == 0 (
goto found
) else (
goto nope
)
:found
cls
echo founded ! %Variable%
pause
exit
:nope
cls
echo not found!
pause
exit
好的,我解释一下:在第二行,我想要找到的数字“100”和“Config.dat”是其中包含数字100和其他一些数字以及那里的“变量”的文件是我想要存储在其中的变量的名称100。
问题是当它创建了数字100时它进入“找到”功能并显示“成立!100”但是当它没有建立时它也会进入“找到”功能并且只显示成立!没有100.那么为什么当它没有创建它时,它会“发现”我需要它去“不”。
所以我希望你们向我解释一下我做错了什么并且谢谢!
答案 0 :(得分:0)
这是因为for /F
在独立的cmd.exe
进程中调用命令,并且不会将错误级别返回到调用者的上下文中:
@echo off
rem drop last error level
type nul>nul
for /F "usebackq delims=" %%a in (`cmd.exe /C @exit /b 123`) do rem
echo ERRORLEVEL=%ERRORLEVEL%
-
ERRORLEVEL=0
如果您只想将配置值加载到环境变量中,则无需搜索任何内容。只需为此创建独立配置文件。
<强> config.vars 强>
# loads by cmd.exe script
aaa=111
"bbb=111 222"
/A ccc=1+1
"ddd=%bbb% & 333"
<强> load_config.bat 强>
@echo off
for /F "usebackq eol=# tokens=* delims=" %%i in ("config.vars") do (
call set %%i
)