Нужно печатать каждую строку в файле одну за другой, используя пакетный скрипт Windows - PullRequest
0 голосов
/ 21 января 2019

У меня есть файл 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 голосов
/ 21 января 2019

Если я понимаю, что вы говорите, вы хотите это:

@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

В качестве альтернативы, вы должны указать самому Скотту, какую строку перейти к:

@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 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...