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

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

Ответить
Настройки темы
CMD/BAT - [решено] Поиск, замена текста в *.txt и вывод результата в другой каталог

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


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

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


Здравствуйте. Помогите создать батник который производит поиск в папке файлов *.txt. В них ищем, допустим, "не готов" и меняем на "отправлен", и сохраняем результат в другую папку с тем же именем, если есть такой файл с таким именем - заменяем его без подтверждения... понятия не имею как сделать это. В тексте могут встречаться символы [] # *** . Помогите плз.

Пример
до

Не готов hghgjhjgjg# 35464747лалалл
апаррпопопо [9f8d7d6d5s4s]
hghghgj*****kgkgk

Не готов hghgjhjgjg# 3876556564лалалл
апаррпопопо [6н7у8вл8]
hghghgj*****ыспыва

после

отправлен hghgjhjgjg# 35464747лалалл
апаррпопопо [9f8d7d6d5s4s]
hghghgj*****kgkgk

отправлен hghgjhjgjg# 3876556564лалалл
апаррпопопо [6н7у8вл8]
hghghgj*****ыспыва

Отправлено: 21:54, 01-11-2015

 

Ветеран


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

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


Цитата Vi3aliy:
поиск в папке файлов *.txt. В них ищем, допустим, "не готов" »
Упакуйте образцы двух-трёх файлов в архив, каковой приложите к сообщению.

Отправлено: 00:26, 02-11-2015 | #2



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

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


Ветеран


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

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


Код:


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

>nul chcp 1251

set "source=C:\папка А"
set "destination=C:\папка Б"
set "pattern=*.txt"

>nul chcp 866

set "original=Не готов"
set "final=отправлен"

for /f "delims=" %%i in ('
 ^>.tmp cmd/v/c echo.!original!^& 2^>nul findstr/milg:.tmp "%source%\%pattern%"^& del .tmp
') do 2>nul (
 for /f %%j in ('^<"%%i" find/c /v ""') do <"%%i">"%destination%\%%~nxi" (
  for /l %%k in (1 1 %%j) do @(
   set x=& set/p x=& if defined x (
    for /f "delims=" %%l in ('cmd/v/c echo "!x:%original%=%final%!"') do @(
     echo.%%~l
    ) 
   ) else (
    echo.
   )
  )
 )
)

exit/b

.



Предупреждение:


1) пакетный файл с данным кодом ни в коем случае не сохраняйте в кодировке OEM-866;

2) в случае замены строки, содержащей буквы русского алфавита, чётко соблюдайте регистр этих букв при задании переменной "original" (например, если в Вашем тексте надо заменить фразу "Не готов", то надо писать именно "Не готов", а не "не готов".
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:08, 02-11-2015 | #3


Ветеран


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

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


Цитата Georgio:
1) пакетный файл с данным кодом ни в коем случае не сохраняйте в кодировке OEM-866; »
Никак Вы не хотите народ приобщать к разумному-доброму-вечному .

Отправлено: 05:48, 02-11-2015 | #4


Ветеран


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

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


Цитата Iska:
Никак Вы не хотите народ приобщать к разумному-доброму-вечному . »
Не виноватая я! Он сам пришёл! Да я уж не такой злодей, это опять она, команда "FINDSTR", виновата.

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


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


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

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


Огромное спасибо. Все работает.
Насчет кодировки все понял, меняем (Не готов - Not ready и отправлен - has been sent)
Еще просьба - можно сделать поиск и во вложеных папках, и как то сделать чтобы переодически все повторялось(раз в час или полчаса)?

Отправлено: 21:30, 02-11-2015 | #6


Ветеран


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

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


Цитата Vi3aliy:
и как то сделать чтобы переодически все повторялось(раз в час или полчаса)? »
Назначенные задания/Планировщик задач. Главное, чтоб обработанные файлы у Вас куда-то убирались из исходной папки.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:36, 02-11-2015 | #7


Ветеран


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

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


Цитата Vi3aliy:
... сделать поиск и во вложеных папках... »


Можно. Добавьте ключ "/S" для команды "FINDSTR":
Код: Выделить весь код
 ^>.tmp cmd/v/c echo.!original!^& 2^>nul findstr/msilg:.tmp "%source%\%pattern%"^& del .tmp
.




Цитата Vi3aliy:
... сделать чтобы переодически все повторялось(раз в час или полчаса)... »


Зациклить тоже можно. Но лучше делайте, как коллега Iska советует.
Это сообщение посчитали полезным следующие участники:

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


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


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

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


Всё получилось.Спасибо.

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Замена текста в txt Starter1 Скриптовые языки администрирования Windows 17 04-08-2022 18:26
VBS/WSH/JS - Поиск текста в файлах и копирование результата по сети anton_ego Скриптовые языки администрирования Windows 4 25-02-2013 12:42
CMD/BAT - [решено] Сравнение txt файлов и вывод результата LAKERS824 Скриптовые языки администрирования Windows 2 08-07-2012 12:48
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы rustoss AutoIt 10 29-09-2011 15:27
Поиск текста в txt Centrinar AutoIt 5 23-07-2010 19:59




 
Переход