CMD/BAT - Чтение строки поочередно, и запись в файл
-
Reanosi
CMD/BAT - Чтение строки поочередно, и запись в файл
Здравствуйте. Форум замечательный, ответил на многие мои вопросы, но возникла задача, с которой не могу никак справится. Есть текстовый файл с данными по строкам (строк каждый раз разное количество), необходимо поочередно брать строки, и записывать их в текстовый файл, при каждом запуске батника, по завершению копирования последней строчки, начать с первой, зациклить. Т.е при каждом запуске батника необходима одна строка из первого списка. Нашел на форуме код счетчика, но подправить его под свои нужды увы, не смог.
-
alpap
Re: CMD/BAT - Чтение строки поочередно, и запись в файл
Не очень-то понял задачу
Например такой код будет брать из "file.txt" одну строку по нарастанию при каждом запуске bat и записывать ее в "OUT.txt". Будет создаваться вспомогательный файл "$", его не удалять до конца цикла действий, а вот перед новым циклом, напротив - удалить (можно его создавать и не на виду)
Код:
зацикливание не делал так как пока не понимаю задачи
Вот с зацикливанием:
Код:
Например такой код будет брать из "file.txt" одну строку по нарастанию при каждом запуске bat и записывать ее в "OUT.txt". Будет создаваться вспомогательный файл "$", его не удалять до конца цикла действий, а вот перед новым циклом, напротив - удалить (можно его создавать и не на виду)
Код:
Код: Выделить всё
@echo off
set "f=file.txt"
set "f_out=OUT.txt"
(if exist $ $ cmd /v/c echo:!n!
>"%f_out%" (for /f "tokens=2 delims=[]" %%a in ('find /n /v ""^|find "[%n%]"') do @echo:%%a)
pause>nulзацикливание не делал так как пока не понимаю задачи
Вот с зацикливанием:
Код:
Код: Выделить всё
@echo off
set "f=file.txt"
set "f_out=OUT.txt"
(if exist $ $ cmd /v/c echo:!n!
"%f_out%" (for /f "tokens=2 delims=[]" %%a in ('find /n /v ""^|find "[%n%]"') do @echo:%%a)
if %n%==%smax% del $
pause>nul-
Reanosi
Re: CMD/BAT - Чтение строки поочередно, и запись в файл
Огромное спасибо, но есть одно но. В OUT.txt добавляются строки, а мне нужно чтобы он заменял первую строку новой. (в OUT.txt должна быть всегда только одна строка)
-
Reanosi
Re: CMD/BAT - Чтение строки поочередно, и запись в файл
Код:
В исходном файле не должно быть пустых строк
Код: Выделить всё
@Echo Off
cls
Set "FileIn=Z:\Box_In\File.txt"
Set "FileOut=Z:\Box_In\FileString.txt
Call :WriteCount "%FileIn%" "%FileOut%" "%~nx0"
more "%FileOut%"
Pause
GoTo :Eof
:WriteCount
Set "Counter=%~dp2%~nx1.%~3.log"
If Not Exist "%Counter%" (
>"%Counter%" (Echo 1)
FOR /F "usebackq delims=" %%s IN (%1) DO (>"%FileOut%" (Echo %%s) &Exit /B 0)
Exit /B 2
)
3<"%Counter%" (Set /P N=<&3)
Set /A NN=%N%+1
FOR /F "usebackq skip=%N% delims=" %%s IN (%1) DO (>"%Counter%" (Echo %NN%) &>"%FileOut%" (Echo %%s) &Exit /B 0)
Del "%Counter%"
GoTo :WriteCount
GoTo :EofВ исходном файле не должно быть пустых строк
-
Reanosi