对于批处理多行中的 /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
我正在尝试搜索文本文件,但我遇到了问题:
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