Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] обработка в подстроке

Ответить
Настройки темы
CMD/BAT - [решено] обработка в подстроке

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Есть файл 1.txt с текстом вида:

261|12571301873099|315|abcacabjac||
262|12571301873105|345|sgdfgdfgdfg||
263|12571301873112|368|dsgsdgsdgs||
264|12571301873129|380|sdgsdgdsgs||
265|12571301873136|382|fasfasfasfas||
266|12571301873143|453|gdbdfbndfb||
267|12571301873167|459|dfbfdbfdbdffdb||
268|12571301873181|462|dfbfdbdfbdfbdf||
269|12571301873204|601|fdbdfbdfbdfbfdd||
270|12571301873228|731|dfbfdbdfbfdbdfbd||
271|12571301873242|770|dfbfdbdfbdsfsdff||

надо парсить строки где третье число >394,
Нужно вычесть из этого числа 394, и сделать дубль строки с остатком, если остается опять больше 394, то повторяем.

Отправлено: 17:10, 27-07-2016

 

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off

Set "File=1.txt"
Set "FileOut=1.new.txt"

Set /A MM=394

SetLocal EnableDelayedExpansion

Del "%FileOut%" 2>nul
FOR /F "usebackq tokens=1,2,3,4,5 delims=|" %%i IN ("%File%") DO (
	Set /A kk=%%k-%%k/%MM%*%MM%
	>>"%FileOut%" Echo %%i^|%%j^|!kk!^|%%l^|%%m^| 
)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 20:07, 27-07-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


megaloman, все верно, только надо строки с 394 оставлять,
т.е. должно получиться так

261|12571301873099|315|abcacabjac||
262|12571301873105|345|sgdfgdfgdfg||
263|12571301873112|368|dsgsdgsdgs||
264|12571301873129|380|sdgsdgdsgs||
265|12571301873136|382|fasfasfasfas||
266|12571301873143|394|gdbdfbndfb||
266|12571301873143|59|gdbdfbndfb||
267|12571301873167|394|dfbfdbfdbdffdb||
267|12571301873167|65|dfbfdbfdbdffdb||
268|12571301873181|394|dfbfdbdfbdfbdf||
268|12571301873181|68|dfbfdbdfbdfbdf||
269|12571301873204|394|fdbdfbdfbdfbfdd||
269|12571301873204|207|fdbdfbdfbdfbfdd||
270|12571301873228|394|dfbfdbdfbfdbdfbd||
270|12571301873228|337|dfbfdbdfbfdbdfbd||
271|12571301873242|394|dfbfdbdfbdsfsdff||
271|12571301873242|376|dfbfdbdfbdsfsdff||

Отправлено: 10:30, 28-07-2016 | #3


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off

Set "File=1.txt"
Set "FileOut=1.new.txt"

Set /A MM=394

SetLocal EnableDelayedExpansion

Del "%FileOut%" 2>nul
FOR /F "usebackq tokens=1,2,3,4,5 delims=|" %%i IN ("%File%") DO (
	
	Set /A kn=%%k/%MM%
	FOR /L %%a IN (!kn!,-1,1) DO (
		Set /A kk=%%a*%MM%
		>>"%FileOut%" Echo %%i^|%%j^|!kk!^|%%l^|%%m^|
	)

	Set /A kk=%%k-%%k/%MM%*%MM%
	If Not !kk! EQU 0 >>"%FileOut%" Echo %%i^|%%j^|!kk!^|%%l^|%%m^|
)
Увы, приходится домысливать постановку за Вас.
Цитата pageYK@fb:
Нужно вычесть из этого числа 394, и сделать дубль строки с остатком, если остается опять больше 394, то повторяем. »
Я правильно понял, что если будет строка

277|12571301873242|999|dfbfdbdfbdsfsdff||

то в ответе надо иметь

277|12571301873242|788|dfbfdbdfbdsfsdff||
277|12571301873242|394|dfbfdbdfbdsfsdff||
277|12571301873242|211|dfbfdbdfbdsfsdff||

?????????

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 28-07-2016 в 13:19.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:08, 28-07-2016 | #4


Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


megaloman, вот так
277|12571301873242|394|dfbfdbdfbdsfsdff||
277|12571301873242|394|dfbfdbdfbdsfsdff||
277|12571301873242|111|dfbfdbdfbdsfsdff||

Отправлено: 16:10, 28-07-2016 | #5


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


pageYK@fb,
Из написанного вами, выходит так надо действовать:
Код: Выделить весь код
@echo off
set a=999
if %a% geq 394 set/a x=%a%/394& set/a y=%a%%%394
echo Повторов:%x:~,1%, остаток:%y%
pause>nul
но вот как ни крутил варианты, но не могу понять как у вас получается 111?

Отправлено: 19:04, 28-07-2016 | #6


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата pageYK@fb:
вот так »
Ом мани падме хум!
Код: Выделить весь код
@echo off

Set "File=1.txt"
Set "FileOut=1.new.txt"

Set /A MM=394

SetLocal EnableDelayedExpansion

Del "%FileOut%" 2>nul
FOR /F "usebackq tokens=1,2,3,4,5 delims=|" %%i IN ("%File%") DO (
	
	Set /A kn=%%k/%MM%
	FOR /L %%a IN (!kn!,-1,1) DO (
		>>"%FileOut%" Echo %%i^|%%j^|%MM%^|%%l^|%%m^|
	)

	Set /A kk=%%k-%%k/%MM%*%MM%
	If Not !kk! EQU 0 >>"%FileOut%" Echo %%i^|%%j^|!kk!^|%%l^|%%m^|
)
alpap, ИМХО 211

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:53, 28-07-2016 | #7


Аватара для lxa85

Необычный


Contributor


Сообщения: 4466
Благодарности: 995

Профиль | Сайт | Отправить PM | Цитировать


megaloman, alpap, просто монстры!

Отправлено: 16:28, 03-08-2016 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] обработка в подстроке

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Переменная в подстроке pageYK@fb Скриптовые языки администрирования Windows 1 28-07-2016 00:47
PowerShell - Обработка текста hatun Скриптовые языки администрирования Windows 6 27-08-2013 06:44
PowerShell - Сортировка файлов по подстроке kostich Скриптовые языки администрирования Windows 12 15-12-2012 13:27
Perl(Поиск строки в подстроке) Jonik-Mnimonik Программирование в *nix 4 15-11-2010 17:42
Обработка видео Antonij Видео и аудио: обработка и кодирование 14 29-03-2007 21:44




 
Переход