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

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

Ответить
Настройки темы
CMD/BAT - Правка текстового файла

Пользователь


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

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


Изменения
Автор: mxm199
Дата: 03-07-2012
Доброго всем времени суток, подскажите пожалуйста - имеется текстовый файл, много-много строк, примерно такой -
---
текст текст текст 1111111111;
текст2 текст2 текст2 2222222222;
...
---
вопрос - каким образом можно добавить в начало каждой строки одно и тоже слово, а последнее слово в каждой строке (номер) немного видоизменить ?
т.е. на выходе хотелось видеть -
---
СЛОВО текст текст текст ФАЙЛ 1111111111
СЛОВО текст2 текст2 текст2 ФАЙЛ 2222222222
...
---

вообще мне это нужно, что бы получить батник spisok.cmd такого вида
---
@echo текст текст текст > c:\spisok\1111111111
@echo текст2 текст2 текст2 > c:\spisok\2222222222
---
ну и естественно, после запуска этого батника получаю много-много файлов, содержащих каждый свой текст.

Заранее спасибо.

Отправлено: 13:57, 03-07-2012

 

Пользователь


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

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


не, текст везде по длине и блокам у всех совершенно разный (

Отправлено: 15:17, 03-07-2012 | #2



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

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


Пользователь


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

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


текст и с пробелами и с точками, точкой запятой, полный набор символов )

Отправлено: 10:26, 04-07-2012 | #3


Старожил


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

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


А зачем, собственно, использовать один батник для генерации другого, если всё можно сделать в одном?

Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

rem Разбираем исходный файл построчно
For /F "usebackq delims=" %%L In ("test.txt") Do (
	Set Text=%%L
	rem Выделяем последний сегмент строки
	For %%A In (%%L) Do (Set LastWord=%%A)
	rem Костыль с for из-за невозможности замены с двумя !переменными!
	For /F "delims=" %%S In ("!LastWord!") Do (
		rem Убираем последний сегмент
		Set Text=!Text:%%S=!
		rem И откусываем последние два символа - точку с запятой и
		rem разделитель-пробел
		Set Text=!Text:~,-2!
	)
	rem Пишем строку в файл, имя которого берется из последнего сегмента её же
	Echo !Text!>"C:\spisok\!LastWord!.txt"
)
Pause
На приведенном вами примере
Цитата mxm199:
текст текст текст 1111111111;
текст2 текст2 текст2 2222222222; »
работает. Как на реальных данных будет - зависит от них, я бы предпочел увидеть именно их. Из возможных узких мест:
* Длина строки не должна выходить за пределы максимальной длины переменной у командного интерпретатора windows
* Восклицательные знаки из текста будут убраны из-за EnableDelayedExpansion
* Имя конечного файла должно быть без пробелов, иначе один из циклов For воспримет его, как разделитель. Или, если пробелы нужны - заключено в двойные кавычки.

Последний раз редактировалось Anonymоus, 04-07-2012 в 11:23.

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

Отправлено: 10:53, 04-07-2012 | #4


Пользователь


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

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


ПРОСТО ШИКАРНО!!! Очень благодарен, огромное СПАСИБО )))
Не хочется наглеть ))) а возможно сделать, чтобы готовые разбитые файлы были в кодировке UTF8 без BOM ???

Отправлено: 11:30, 04-07-2012 | #5


Старожил


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

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


mxm199, а исходные файлы в UTF-8 без BOM? Если да, то просто сохраните батник в такой же кодировке.
Если нет - можно с легкостью на лету сменять кодировку строки с помощью recode из пакета GNU coreutils

Отправлено: 11:34, 04-07-2012 | #6


Пользователь


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

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


исходный просто в АНСИ, это я понял, что зависит от исходника, при смене на УТФ исходника и готовые получаются в УТФ, ну это я так уже спросил )

....как тут плюс поставить...?

Отправлено: 11:57, 04-07-2012 | #7


Старожил


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

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


Вот ещё на всякий случай, если вам придется работать с не-ANSI входным файлом:
Код: Выделить весь код
	Echo !Text!>"C:\spisok\!LastWord!.txt"
заменяется на
Код: Выделить весь код
	Echo !Text!|recode cp1251..utf8>"С:\spisok\!LastWord!.txt"
где cp1251 меняется на кодировку файла со входными данными. А саму утилиту recode можно взять отсюда
Цитата mxm199:
....как тут плюс поставить...? »
Снизу каждого поста есть ссылка "полезное сообщение".
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:12, 04-07-2012 | #8


Пользователь


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

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


Всё просто супер )

рекоде должна соответственно вместе с батником лежать?

Отправлено: 14:56, 04-07-2012 | #9


Старожил


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

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


Да, или рядом с батником, или в любой директории, прописанной в %Path%.

Отправлено: 14:58, 04-07-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 - [решено] Правка файла HOSTS в Windows 2008 wolf_7777 Windows Server 2008/2008 R2 20 25-11-2013 23:20
CMD/BAT - [решено] Правка файла hosts c правами администратора James Marsh Скриптовые языки администрирования Windows 2 06-12-2010 23:36
CMD/BAT - [решено] Разбивка текстового файла файла Seryoga204 Скриптовые языки администрирования Windows 1 04-10-2010 21:19
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. Nun-Nun Скриптовые языки администрирования Windows 6 13-05-2009 13:28
C/C++ - Открытие текстового файла .::.DIMA.::. Программирование и базы данных 4 05-05-2009 12:17




 
Переход