嵌套的For循环,用于在文件中查找特定行

时间:2019-03-28 22:41:14

标签: batch-file find

此代码来自Jeb-

set "lineNr=%1"
set /a lineNr-=1
for /f "usebackq delims=" %%a in (`more +%lineNr% text.txt`) DO (
  echo %%a
  goto :leave
)
:leave

在我的情况下不起作用。我想将其包含在这样的嵌套for循环中

for %%x in (*.md) do (
set "lineNr=7"
set /a lineNr-=1
for /f "usebackq delims=" %%a in (`more +%lineNr% "%%x"`) DO (
  echo %%a
  goto :leave
)
:leave
)

如果我使用上述方法,则会出现

错误
) was unexpected at this time.

如果我这样做

for %%x in (*.md) do (
    set "lineNr=7"
    set /a lineNr-=1
    for /f "usebackq delims=" %%a in (`more +%lineNr% "%%x"`) DO (
      echo %%a
      goto :leave
    )
    )
    :leave

然后将不处理所有其他* .md文件,因为我相信我处于循环之外,并且由于“ cmNR”出于某些原因从cmd输出中删除,“ LineNR”已删除,因此它也不起作用-< / p>

set "lineNr=7"
 set /a lineNr-=1
 for /F "usebackq delims=" %a in (`more + "%x"`) DO (
echo %a
 goto :leave
)
)
:leave

Cannot access file G:\test\+

我在做什么错?还是有一种更简单的方法来抓几行并将其输出到txt文件?

1 个答案:

答案 0 :(得分:1)

不能真正理解您对数字变量的处理方式,因为处理的每个文件始终为6,但是由于在代码块中,使用该变量时还存在延迟扩展问题。

您可以通过将内部->merge()命令分解为一个函数来解决问题。

FOR