CMD/BAT - Чтение строки поочередно, и запись в файл

Ответить
Аватара пользователя
Reanosi

CMD/BAT - Чтение строки поочередно, и запись в файл

Сообщение Reanosi »

Здравствуйте. Форум замечательный, ответил на многие мои вопросы, но возникла задача, с которой не могу никак справится. Есть текстовый файл с данными по строкам (строк каждый раз разное количество), необходимо поочередно брать строки, и записывать их в текстовый файл, при каждом запуске батника, по завершению копирования последней строчки, начать с первой, зациклить. Т.е при каждом запуске батника необходима одна строка из первого списка. Нашел на форуме код счетчика, но подправить его под свои нужды увы, не смог.
Аватара пользователя
alpap

Re: CMD/BAT - Чтение строки поочередно, и запись в файл

Сообщение alpap »

Не очень-то понял задачу

Например такой код будет брать из "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 - Чтение строки поочередно, и запись в файл

Сообщение Reanosi »

Огромное спасибо, но есть одно но. В OUT.txt добавляются строки, а мне нужно чтобы он заменял первую строку новой. (в OUT.txt должна быть всегда только одна строка)
Аватара пользователя
Reanosi

Re: CMD/BAT - Чтение строки поочередно, и запись в файл

Сообщение Reanosi »

Код:

Код: Выделить всё

@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

В исходном файле не должно быть пустых строк
Ответить

Вернуться в «Скриптовые языки администрирования Windows»