对于批处理多行中的 /f 命令

For /f command in batch multiple lines

我正在尝试搜索文本文件,但我遇到了问题:

Test.txt:

Pizza|Cheese
Filet Mignon|Meat
Bread|Dough

如何使用 "for /f" 命令查看所有行,然后仅回显一件事。 这就是我现在所在的位置:

for /f "tokens=2*delims=|" %a in (test.txt) do echo %a

这与奶酪、肉类和面团相呼应。我如何隔离这些行,以便 for /f 查找这些行而不是其他行。

这就是我想要做的:

@echo off
set /p Quest="What do you want to eat? "
for /f "tokens=2*delims=|" %a in (test.txt) do (
if Quest=Pizza echo ???         <===This is the area where I am having problems
if Quest="Filet mignon" echo ??? <=What are the commands so I can echo only Cheesy, Meaty, or Dough?
if Quest=Bread echo ???        <===Because what is happening right now is that everything is displayed.
)
Pause

您忘记了变量所需的 %。我认为这就是您希望它执行的操作:

@echo off
set /p Quest="What do you want to eat? "
for /f "tokens=1* delims=^|" %%a in (test.txt) do if "%Quest%"=="%%~a" Echo %%b
pause

要求用户 select 食品,然后回显该食品的成分。

正如我想的那样:

@echo off
set /p Quest="What do you want to eat? "
for /f "tokens=1,2 delims=|" %%a in (test.txt) do (
  if /i "%Quest%"=="%%a" echo %%b
)
Pause

如果 test.txt 很大,使用 FINDSTR 查找您需要的行会更有效:

@echo off
set /p Quest="What do you want to eat? "
for /f "tokens=2 delims=|" %%a in ('findstr /ibc:"%Quest%|" test.txt') do echo %%a
Pause