需要使用Windows批处理脚本一一打印文件中的每一行

时间:2019-01-21 15:19:33

标签: batch-file

我有一个文件output.txt,其中包含以下内容

state online
progress 55
time 21/01/2019
type master
disk_count 55
disk_type medium

并连续100行,并用空格隔开。

我尝试过:

@echo off
for /F "delims=" %%i in (output.txt) do ( set z=%%i goto print )
:print
echo %z%
for /f "skip=1' %%g in (output.txt) DO if not defined line set "line=%%g"
echo %line%

我需要逐行打印出每一行。
 如果我尝试打印,有时会忽略空格旁边的字符。

请帮忙处理批处理文件。.

1 个答案:

答案 0 :(得分:0)

如果我明白了您的意思,您就会想要:

@echo off
for /f "delims=" %%i in (output.txt) do echo %%i

根据您的评论,一行一行地执行操作,我们需要退出循环,直到您决定再次输入循环为止:

@echo off
set /a cnt=0
:begin
for /f "delims=" %%i in ('type output.txt ^| more +%cnt%') do echo %%i goto continue

:continue
set /a cnt+=1
pause>nul
goto begin

或者,您需要告诉scipt转到哪行:

@echo off
:begin
set /p cnt=Enter the line number to print (1,2,3,etc):
set /a cnt-=1
for /f "delims=" %%i in ('type output.txt ^| more +%cnt%') do echo %%i & goto continue

:continue
set /a cnt+=1
echo Press any key to display the next line.
pause>nul
goto begin

您会注意到,首先我们设置变量%cnt%,然后再次减去1,这是由于more +N命令所致。如果要显示第一行,则表示我们不想跳过任何行,因此选择1并扣除第一行,这意味着我们跳过0行,将显示行{{1} }等。