Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用循环中获得的特定行号获取文件中的一行_Batch File - Fatal编程技术网

Batch file 使用循环中获得的特定行号获取文件中的一行

Batch file 使用循环中获得的特定行号获取文件中的一行,batch-file,Batch File,我需要根据循环中得到的行号将一行提取到文件中。事实上,我从第一个FOR命令中得到了第7行,到目前为止还不错,我必须将这一行读入myfile.txt。在第二FOR循环中执行读取操作;由于输出'result.txt'为空,此步骤不起作用 for /f "tokens=1* delims=:" %%a in (lines.txt) do set line=%%a& goto breakFor "%line%" :breakFor echo.%line% for /f "tokens=*" %

我需要根据循环中得到的行号将一行提取到文件中。事实上,我从第一个FOR命令中得到了第7行,到目前为止还不错,我必须将这一行读入myfile.txt。在第二FOR循环中执行读取操作;由于输出'result.txt'为空,此步骤不起作用

for /f "tokens=1* delims=:" %%a in (lines.txt) do set line=%%a& goto breakFor "%line%"

:breakFor
echo.%line%
for /f "tokens=*" %%a in ('findstr /n .* "myfile.txt"') do if "%%a"=="%1" set line=%%i
echo.%line%>result.txt
这是myfile.txt和lines.txt的一部分

lines.txt
7:I=output7
515:I=output515
837:I=output837
851:I=output851

myfile.txt is made of lines of text (I1,I2,I3,...)
I1=some text....
I2=text...
你能告诉我原因并帮我解决吗?
谢谢

试试这个,看看输出:

@echo off &setlocal
set "line=test"
goto breakFor "%line%"
:breakFor
echo "%~1"

尝试此操作并查看输出:

@echo off &setlocal
set "line=test"
goto breakFor "%line%"
:breakFor
echo "%~1"

下面的批处理文件执行以下操作:

  • 读取文件lines.txt的第一行
  • 获取显示在分号之前的数字
  • 使用此编号在myfile.txt中查找该行
  • 出示那条线

这是你想要的吗?我更愿意这样做:

for /f "tokens=1* delims=:" %%a in (lines.txt) do set /A line=%%a-1& goto breakA
:breakA
echo.%line%
for /f "skip=%line% tokens=1* delims=:" %%a in ('findstr /n "^" "myfile.txt"') do set line=%%b& goto breakB
:breakB
echo.%line%>result.txt

下面的批处理文件执行以下操作:

  • 读取文件lines.txt的第一行
  • 获取显示在分号之前的数字
  • 使用此编号在myfile.txt中查找该行
  • 出示那条线

这是你想要的吗?我更愿意这样做:

for /f "tokens=1* delims=:" %%a in (lines.txt) do set /A line=%%a-1& goto breakA
:breakA
echo.%line%
for /f "skip=%line% tokens=1* delims=:" %%a in ('findstr /n "^" "myfile.txt"') do set line=%%b& goto breakB
:breakB
echo.%line%>result.txt


请发布几行
myfile.txt
,并清楚地解释您想要实现的目标。不要以为我们知道行号是什么意思!在您的示例中,myfile.txt有4行。第一个分号前有数字7。您想要这个文件的第7行吗?但它只有4行!我将获得第7行,并将其搜索到myfile.txt以阅读此行。请发布几行
myfile.txt
并清楚地解释您想要实现的目标。不要以为我们知道行号是什么意思!在您的示例中,myfile.txt有4行。第一个分号前有数字7。您想要这个文件的第7行吗?但它只有4行!我会得到第7行并搜索到myfile.txt来阅读这一行。你看:这不起作用:
for/f“tokens=1*delims=:”(lines.txt)中的%%a设置行=%%a&goto breakFor”%line%
如果“%%a”==“%1”
。请问,为什么你给我的测试示例不起作用?设置“line=test”转到“%line%”的中断:echo“%~1”的中断您的代码已损坏。我的例子应该说明,如何使它更好。当然。你看:这不起作用:
for/f“tokens=1*delims=:”(lines.txt)中的%%a设置行=%%a&goto breakFor”%line%
如果“%%a”==“%1”
。请问,为什么你给我的测试示例不起作用?设置“line=test”转到“%line%”的中断:echo“%~1”的中断您的代码已损坏。我的例子应该说明,如何使它更好。不是真的,result.txt仍然是空的。请输入分号前的数字,您想得到什么?实际上,我想将第7行输入myfile.txt,这与我在其中检索第7行的lines.txt不同。谢谢,没关系!非常感谢你。请你对你的代码稍加评论好吗?“findstr/n”“myfile.txt”“中的“^”是什么意思?真的谢谢你again@new:它完全等同于您的
findstr/n.*“myfile.txt”
;-)如果你认为这个答案对你有用,你可以投票支持它,或者接受它为最佳答案,或者两者兼而有之!不是真的,result.txt仍然为空。请输入分号前的数字,您想得到什么?实际上,我想将第7行输入myfile.txt,这与我在其中检索第7行的lines.txt不同。谢谢,没关系!非常感谢你。请你对你的代码稍加评论好吗?“findstr/n”“myfile.txt”“中的“^”是什么意思?真的谢谢你again@new:它完全等同于您的
findstr/n.*“myfile.txt”
;-)如果你认为这个答案对你有用,你可以投票支持它,或者接受它为最佳答案,或者两者兼而有之!