Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Чтение строки поочередно, и запись в файл (http://forum.oszone.net/showthread.php?t=333188)

Reanosi 15-02-2018 02:45 2798046

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

alpap 15-02-2018 12:04 2798088

Не очень-то понял задачу
Например такой код будет брать из "file.txt" одну строку по нарастанию при каждом запуске bat и записывать ее в "OUT.txt". Будет создаваться вспомогательный файл "$", его не удалять до конца цикла действий, а вот перед новым циклом, напротив - удалить (можно его создавать и не на виду)
Код:

@echo off
set "f=file.txt"
set "f_out=OUT.txt"

(if exist $ <$ set /p n=)& set /a n+=1&>$ cmd /v/c echo:!n!
<"%f%">>"%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 $ <$ set /p n=)& set /a n+=1&>$ cmd /v/c echo:!n!
<"%f%" (for /f "delims=" %%a in ('find /c /v ""') do @set "smax=%%a")
<"%f%">>"%f_out%" (for /f "tokens=2 delims=[]" %%a in ('find /n /v ""^|find "[%n%]"') do @echo:%%a)
if %n%==%smax% del $
pause>nul


Reanosi 15-02-2018 14:39 2798123

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

megaloman 15-02-2018 14:40 2798124

Код:

@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 15-02-2018 14:48 2798127

Супер. Огромное спасибо.


Время: 01:31.

Время: 01:31.
© OSzone.net 2001-