Batch file 使用循环中获得的特定行号获取文件中的一行
我需要根据循环中得到的行号将一行提取到文件中。事实上,我从第一个FOR命令中得到了第7行,到目前为止还不错,我必须将这一行读入myfile.txt。在第二FOR循环中执行读取操作;由于输出'result.txt'为空,此步骤不起作用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 /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”
;-)如果你认为这个答案对你有用,你可以投票支持它,或者接受它为最佳答案,或者两者兼而有之!