Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Виктор83
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 140
1

Добавление символа к каждой строке файла, объединение получившихся строк в одну и последующее её разбиение

30.10.2015, 14:15. Просмотров 1321. Ответов 25
Метки нет (Все метки)

Здравствуйте!

Имеется txt файл, в нем данные представлены в столбце в следующем виде:

50:19:0010101
50:19:0010102
50:19:0010103
50:20:0010331

Необходимо добавить после каждого текста строки символ ;
Что бы получилось:
50:19:0010101;
50:19:0010102;
50:19:0010103;
50:20:0010331;

Потом объединить в одну строку 50:19:0010101;50:19:0010102;50:19:0010103;50:20:0010331;

Затем разбить получившуюся строку на строки с количеством символов 700.

Возможно ли это сделать при помощи батника?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2015, 14:15
Ответы с готовыми решениями:

Добавление определённого символа в конец каждой, начиная со второй, строки файла
Всем привет. Есть файлик допустим он TXT. В нем много строк. Надо в каждую...

Объединение строк в одну строку
здравствуйте! как организовать в bat такое приведу пример 1.txt написано "ира"...

Добавление к каждой строке текстового файла тега "<br>"
Требуется простейшим образом преобразовать текстовые файлы в .htm....

Добавление определённого символа в конец и начало каждой строки
Всем привет. Есть файлик допустим он TXT. В нем много строк. Надо в каждую...

Объединение строк из файла в одну
Снова здравствуйте, уважаемые форумчане... Имеется вопрос - Как с текстового...

25
greg zakharov
30.10.2015, 21:28     Добавление символа к каждой строке файла, объединение получившихся строк в одну и последующее её разбиение
  #21

Не по теме:

ComSpec, на его "девственную" чистоту никто не посигал: нужно было решение - оно есть, благо есть из чего выбирать.

0
Виктор83
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 140
31.10.2015, 15:17  [ТС] 22
Если есть свободное время, помогите немного изменить программу этой темы.

В папке с батником лежат файлы вида 50_02.txt, 50_03.txt, 62_01.txt.
Задача запустить батник для каждого из файлов и сохранить каждый файл в виде 50_02_out.txt

ComSpec, проверил Ваш батник, работает, но немного дольше...
0
ComSpec
3409 / 1953 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
31.10.2015, 19:01 23
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off& setlocal enabledelayedexpansion
 
for /f "delims=" %%i in ('2^>nul dir/a-d/b "*.txt"^| findstr/irxc:"[0-9][0-9]_[0-9][0-9]\.txt"') do call :sub "%%i"
 
endlocal& exit/b
 
 
:sub
 <%1>"%~n1_out%~x1" (
 for /f eol^= %%i in ('cmd/u/c "for /f delims^= %%i in ('more') do @echo %%i;"^| more') do @(
  set/a n+=1& if !n! lss 700 (<nul set/p=%%i) else (echo %%i& set n=)
 )
 )
 exit/b
2
volodin661
31.10.2015, 23:21
  #24

Не по теме:

смешные вы, ей-богу.
есть общепризнанный струмент обработки текстов для Уиндус.

как просил ТС, надо последовательно сделать 2 глобальные замены:

первая- символ новой строки заменить на точку с запятой; это вот: s/\n/;/g
вторая- каждое место после 700-го символа заменить на символ новой строки; это вот: s/.{700}\K/\n/g

никаких set local enabledelayedextension ( aftertherainonthursday )

никаких new ActiveXObject Scripting.FileSystemObject OpenTextFile

зачем нагребать весь этот мусор и утрамбовывать его в 30(!) строк для простой замены одного символа на другой?

да, насоздавал майкрософт всяких фекалий,
но что заставляет ими пользоваться при наличии альтернатив ?
религия не велит?

не хуже меня знаете, что даже на "C" можно написать в 6 раз короче.

короче:

Windows Batch file
1
perl -0pe  s/\n/;/g;s/.{700}/\K/\n/g  razd.txt > out.txt
будет работать под DOS, OS/2, Windows 3.1, NT 4.0/ 2000 /XP /Vista/7/8/10/20/30/40, далее со всеми остановками

0
greg zakharov
01.11.2015, 11:46
  #25

Не по теме:

volodin661, короче не значит лучше, ровно как лучше - не всегда короче. Начнем с того, что Perl в Windows не является штатным инструментом, так что его установка ради лаконичного решения весьма сомнительна; есть, конечно, portable версии, но суть это в корне не меняет, в противном случае можно было бы сослаться и на, скажем, тот же Cygwin:

Windows Batch file
1
sed -E ':a;N;$!ba;s/\n/;/g;s/(.{700})/\1\r\n/g' razd.txt>out.txt

0
Виктор83
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 140
30.11.2015, 15:31  [ТС] 26
greg zakharov Просьба, если есть свободная минута, можно ли переписать Ваш батник под это условие :
В папке с батником лежат файлы вида 50_02.txt, 50_03.txt, 62_01.txt.
Задача запустить батник для каждого из файлов и сохранить каждый файл в виде 50_02_out.txt
0
30.11.2015, 15:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2015, 15:31

Добавление в строку экранирующего символа '\' перед каждой кавычкой в строке
Помогите пожалуйста!) Нужно написать класс StringFormatter с методом string...

Найти в матрице максимум по каждой строке, а затем минимум из получившихся чисел
Вводится прямоугольный массив. Найти в нем максимум по каждой строке, а затем...

Найти в массиве максимум по каждой строке, а затем минимум из получившихся чисел
Вводится прямоугольный массив. Найти в нем максимум по каждой строке, а затем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru