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

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

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

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


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

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


добрый день форумчане

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

исходный текстовик:
читать дальше »
‚ ѓ“ Ѓ**Є* ђ®ббЁЁ Ї® Ќ®ў®бЁЎЁабЄ®© ®Ў«*бвЁ ®Ў*®ў«Ґ*л бЇа*ў®з*ЁЄЁ:
EE_AGENT.DBF ў б®бв*ўҐ ee_dat.arj
EE_BKVID.DBF ў б®бв*ўҐ ee_dat.arj
EE_SR.DBF ў б®бв*ўҐ ee_dat.arj
EE_SRTIP.DBF ў б®бв*ўҐ ee_dat.arj
EE_SRVID.DBF ў б®бв*ўҐ ee_dat.arj
EE_STAKO.DBF ў б®бв*ўҐ ee_dat.arj
HDRUS_TU.DBF ў б®бв*ўҐ hd_list.arj
HD_LIST.DBF ў б®бв*ўҐ hd_list.arj
HD_OKATO.DBF ў б®бв*ўҐ hd_list.arj
PK_SRNET.DBF ў б®бв*ўҐ ee_dat.arj
REGFAULT.dbf ў б®бв*ўҐ regfault.arj
ЋЎ*®ўЁвҐ ‚*иЁ бЇа*ў®з*ЁЄЁ Ќ‘€ ў Џ’Љ Џ‘„ Ё§ Є*в*«®Ј* public


файл на выход (название файла - get.txt):
читать дальше »
get public regfault.arj
get public ee_dat.arj
get public hd_list.arj

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

 

Старожил


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

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


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
For /F "usebackq delims=" %%L In ("test.txt") Do (
	For %%A In (%%L) Do (
		Set Name=%%A
		If /I !Name:~-4!==.arj Echo get !Name!>>get.txt
	)
)
Это сообщение посчитали полезным следующие участники:

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



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

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


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


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

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


спасибо, бат работает, но не совсем так как надо

1. имя файла откуда берется текст upd_nsi_*, если так и написать в место "test.txt" ни чего не происходит (* - разные цифры, формат файла отсутствует)
2. в этом батнике они пишет все имена, даже если они повторяются, мне необходимо, что бы повторные не записывались

Отправлено: 12:13, 11-07-2012 | #3


Старожил


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

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


Повторы убраны, перебор файлов по маске добавлен.
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
For /F "delims=" %%F In ('Dir "upd_nsi_*" /A-D /B') Do (
    For /F "usebackq delims=" %%L In ("%%F") Do (
        For %%A In (%%L) Do (
            Set Name=%%A
            If /I !Name:~-4!==.arj (
                Type "get.txt" 2>nul|Find "!Name!">nul||Echo get public %%A>>"get.txt"
            )
        )
    )
)
Pause&Exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:43, 11-07-2012 | #4


Аватара для alek2012

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


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

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


Anufriev попробуй вот этой штукой Grep

Очень полезная вещь, мне кто то на этом форуме посоветовал.

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


Старожил


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

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


alek2012, grep для этой задачи - по моему мнению, излишество, хотя я и пропагандирую его использование везде, где cmd не справляется. Смотрите, скрипт с использованием grep стал короче:
Код: Выделить весь код
@Echo Off
Set Path=%Path%;%CD%\bin
For /F "delims=" %%F In ('Dir "upd_nsi_*" /A-D /B') Do (
    For /F "delims=" %%L In ('grep -Eo "[^ ]*[.]arj" "%%F"') Do (
        Type "get.txt" 2>nul|Find "%%L">nul||Echo get public %%L>>"get.txt"
    )
)
Pause&Exit
Но при этом скрипт не запустится на любом компьютере (grep - внешняя утилита, её приходится таскать вместе со скриптом, а это около полутора мегабайт, сам exe и требуемые dll), кроме того, бывают случаи, когда использование сторонних утилит запрещено по соображениям безопасности.

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


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


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

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


Добрый день!

появилась проблема с этим батником, сам он работает стабильно, но файлы начали приходить с именами архивов в верхнем регистре, а выводить в файл "get.txt" нужно в нижнем регистре, не подскажете, как изменить регистр?

пример входящего текста
FIL.DBF ў б®бв*ўҐ KGRD0922.ARJ
F_ARX.DBF ў б®бв*ўҐ KGRD0922.ARJ
HDRUS_TU.DBF ў б®бв*ўҐ HD_LIST.ARJ
HD_LIST.DBF ў б®бв*ўҐ HD_LIST.ARJ
HD_OKATO.DBF ў б®бв*ўҐ HD_LIST.ARJ

Отправлено: 09:15, 11-11-2015 | #7


Ветеран


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

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


Anufriev,
Код: Выделить весь код
sed -r "s/.* (.+)$/\L\1/" 1.txt > 2.txt

Отправлено: 11:11, 11-11-2015 | #8


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


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

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


Foreigner,

Если не ошибаюсь, то это команда из линухи? в винде она не катит

Отправлено: 11:22, 11-11-2015 | #9


Ветеран


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

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


Цитата:
Если не ошибаюсь, то это команда из линухи? в винде она не катит
А grep катит? Он тоже из "линухи", если что.

Отправлено: 14:14, 11-11-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инфо - Работа с INF-файлами -devICE- Наборы обновлений для Windows XP/2003/Windows 7 6 17-10-2022 01:11
VBS/WSH/JS - Работа с файлами по ftp dazm Скриптовые языки администрирования Windows 0 04-12-2011 12:09
C/C++ - Работа с файлами D@n1k007 Программирование и базы данных 2 19-06-2010 16:06
Работа с файлами ramo Программирование в *nix 5 23-04-2007 12:33
Работа с *.lng файлами Artya Хочу все знать 2 18-03-2003 14:43




 
Переход