首页 > 解决方案 > 条件 For 循环在批处理文件中不起作用

问题描述

条件 For 循环在批处理文件中不起作用

当我在 for 循环中编写条件时,条件正在工作,但在条件之后我想在 for 循环中打印值但它没有显示值,下面是我的脚本

for /f "delims= " %%a in (rule.txt) do (
 findstr select rule.txt(
 mysql  --user u --password p --database d -e  "%%a">>Query.txt
 )
 echo %%a
 )

rule.txt 中的数据

select 
replace
direct

在 for 循环中,findstr 函数正在工作,但它没有在 findstr 函数之后打印值。实际上,它可以正确显示 rule.txt 中的所有数据!当我写 回声 %%a时?但它没有显示预期的结果?我不明白问题出在哪里,有人可以帮助我吗

预期结果:

select 
replace
direct

标签: batch-file

解决方案


您需要findstr作为循环的一部分运行,以便将结果分配给令牌,在这种情况下为%%a

@echo off
for /f %%a in ('type somefile.txt ^|findstr "select"') do echo %%a

我不明白您为什么要搜索确切的单词,然后将其添加到输出中,因为您本来可以将单词添加到字符串中,但是尽管如此。我认为这是您的意图:

@echo off
for /f %%a in ('type somefile.txt ^|findstr "select"') do (
  mysql  --user u --password p --database d -e  "%%a">>Query.txt
  echo %%a
)

但是,您的预期结果与您的 findstr 不匹配您select可能是打算将每一行输出到文件吗?如果是这样,那么这将做到这一点。:

@echo off
for %%a in (somefile.txt) do (
  mysql  --user u --password p --database d -e  "%%a">>Query.txt
  echo %%a
)

推荐阅读