批处理文件如何使用findstr命令查找文本并使其成为变量?

时间:2018-02-10 18:06:42

标签: windows batch-file findstr

我想知道如何使用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.那么为什么当它没有创建它时,它会“发现”我需要它去“不”。

所以我希望你们向我解释一下我做错了什么并且谢谢!

1 个答案:

答案 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
)