Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
Любой язык - [решено] Массовое добавление одной строки из текстового списка в каждый текстовый файл в папке

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


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

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


Есть папка с текстовыми файлами (500 шт). И есть другой текстовый файл с 500 строками текста (список). Нужен код для какого-нибудь батничка или подобие, чтоб строки из списка поочерёдно добавились следующей строкой a каждом из файлов папки: в 1й файл в папке добавилась 1я строка списка, во 2й файл - 2я строка списка. И т. д.

Отправлено: 02:31, 31-07-2018

 

Ветеран


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

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


1. Ds444, есть одна проблема: не существует единого и однозначного порядка файлов, даже в Проводнике и в командной строке порядок/взаиморасположение файлов может отличаться. Что скажете на это?
2. Кодировка текстовых файлов какая? Какие концы строк — CrLf, Lf или Cr?
3. Кодировка и концы строк «другой текстовый файл с 500 строками текста (список)» какие?
4. Как быть, если файлов окажется меньше, чем строк в «другой текстовый файл»? Как быть, если наоборот — меньше будет строк, нежели файлов?

А так-то тупо — держите:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

<"List.txt" (
	for /f "usebackq delims=" %%i in (
		`2^>nul dir /b /a:-d /o:n "%~dp0Source\*.*"`
	) do (
		set /p sLine=
		>>"%~dp0Source\%%i" echo !sLine!
	)
)

endlocal
exit /b 0
В примере имя «другой текстовый файл с 500 строками текста (список)» — List.txt, папка с текстовыми файлами (500 шт) — подкаталог Source, расположенный в каталоге с пакетным файлом.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:21, 31-07-2018 | #2



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

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


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


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

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


Цитата Iska:
2. Кодировка текстовых файлов какая? »
UTF-8 без BOM

Цитата Iska:
Какие концы строк — CrLf, Lf или Cr? »
Понятия не имею. Но в Notepad++ я заменил все концы строк у всех файлов на \r

Цитата Iska:
4. Как быть, если файлов окажется меньше, чем строк в «другой текстовый файл»? Как быть, если наоборот — меньше будет строк, нежели файлов? »
У меня ровно. Ну пусть просто остановится и напишет, что чего-то меньше.

Потестил батничек. Строку из файла он добавляет в конец первой строки, которая уже есть в файле. Но вторую всё же создаёт. Она пустая остаётся.

Отправлено: 04:23, 31-07-2018 | #3


Ветеран


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

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


Цитата Ds444:
Но в Notepad++ я заменил все концы строк у всех файлов на \r »
Зачем?!

Цитата Ds444:
Потестил батничек. Строку из файла он добавляет в конец первой строки, которая уже есть в файле. Но вторую всё же создаёт. Она пустая остаётся. »
Упакуйте пять реальных файлов в архив. Приложите туда же «другой текстовый файл», только не с 500, а с пятью строками текста. Посмотрим.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:21, 31-07-2018 | #4


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


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

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


Вложения
Тип файла: zip Пример.zip
(4.9 Kb, 4 просмотров)

Цитата Iska:
Цитата Ds444:
Но в Notepad++ я заменил все концы строк у всех файлов на \r »
Зачем?! »
Чтоб все одинаковые были.

Архив вот: http://forum.oszone.net/attachment.p...1&d=1533019223

Отправлено: 09:41, 31-07-2018 | #5


Ветеран


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

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


Цитата Ds444:
Архив вот: »
Ну и? Строк в файле — 5, файлов — 4. А кто-то писал, что:
Цитата Ds444:
У меня ровно. »
И для полного счастья — в List.txt кодировка ANSI/1251, в файлах — UTF-8/65001. Это уже задача не столько для пакетных файлов. Причём, в четвёртом файле нет ни одного конца строки — естественно, что добавляемая строка будет добавлена не второй строкой, а в конец первой и единственной строки, и там она так единственной и останется.

Вам есть, что сказать по изложенному? Можете дать какие-то пояснения?
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:56, 31-07-2018 | #6


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


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

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


Цитата Iska:
Ну и? Строк в файле — 5, файлов — 4. А кто-то писал, что: »
А потому что с примером я не заморачивался. Скидывал рандомно. А так их по 500. В принципе, ваш код работает. Помог. Если после другой программки вручную переходы строк не менять - он правильно ставит. Это в первый раз я просто руками лез. Сейчас смотрю - правильно делает. Причём если 2 раза код запускать и ставить сначала текст на латинице, а потом ещё по строке добавить на кириллице, всё равно работает и добавляет в нужной последовательности. Задача решена. А на кодировки он не особо смотрит. Причём Notepad++ показывает, что все кодировки в UTF-8. И козябр при работе кода нет.

Отправлено: 21:05, 31-07-2018 | #7


Ветеран


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

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


Ds444, если все файлы в кодировке UTF-8, то не страшно, работать будет.

Отправлено: 21:12, 31-07-2018 | #8


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


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

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


Здравствуйте! Спасибо за текущее решение.
Столкнулся с почти такой же задачей. Разница тольок в том, что каждый .txt файл лежит в своем подкаталоге каталога Sourсe.(то есть в Source я закидываю не 500 файлов, а 500 папок с файлами) И до них программа не добирается.
Какой код поможет решить такую задачу? Спасибо!

Отправлено: 14:56, 20-03-2019 | #9


Ветеран


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

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


Цитата viktor1981lob:
с почти такой же задачей. »
С какой? Озвучьте её в деталях.

Отправлено: 03:08, 21-03-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сделать элементы списка одной высоты в пределах каждой строки Мамелюк Вебмастеру 0 25-11-2015 19:17
CMD/BAT - Подмена строки из выполненной команды в текстовый файл Jeander Скриптовые языки администрирования Windows 11 19-04-2012 14:32
текстовый файл с именами всех файлов в папке socap AutoIt 19 19-02-2012 16:42
VBS/WSH/JS - Экспорт значений реестра в общий текстовый файл + добавление доп данных в этот файл fedko Скриптовые языки администрирования Windows 0 17-06-2010 11:52
CMD/BAT - [решено] Как имена файлов расположенных в одной папке записать в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 6 12-05-2009 21:44




 
Переход