Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.05.2015
Сообщений: 4
1

Поиск и замена в файле

25.05.2015, 14:40. Показов 5783. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет,
Есть некий файл который генерит программма: задачка найти в файле определенное слово и заменить его на слово введенное пользователем и все.

Файл в кодировке UTF-8 и может содержать русский шрифт: формат
template
template\!Типовое подразделение
template\!Типовое подразделение тест
template\!Типовое подразделение тест\_ТИПОВАЯ ПАПКА


сварганил по образцам следующий скрипт:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
 
Set /p "dst=Enter Project Name:"
Set "runpatch=%~dp0"
Set "folder_template=Шаблон"
Set "acltemplate=ntfs_acltemplate.txt"
Set "find_str=template"
Set "replace_str=%dst%"
Set "tmp_acl_file=%TEMP%\%acltemplate%.tmp"
Set "tmp_acl_file2=%TEMP%\%acltemplate%.tmp2"
 
for /f "tokens=1,* delims=]" %%a in ('type "%tmp_acl_file%" ^|find /n /v ""') do (
  set "str=%%b"
if defined str (
call set "str=echo:%%str:%find_str%=%replace_str%%%"
for /f "delims=" %%a in ('echo:"%%str%%"') do %%~a
chcp 65001>nul
echo %%a >> "%tmp_acl_file2%"
chcp 866>nul
)

Он при замене каверкает файл.

Добавлено через 37 минут
Уже все проверял из поиска, не получается
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2015, 14:40
Ответы с готовыми решениями:

Поиск и замена в файле
Добрый день:) Проблема возникла, прошу помощи! Необходимо в xml файле найти встречающиеся подряд...

Поиск и замена в файле
Доброго дня, помогите пожалуйста написать батник или предложите какой либо инструмент. Необходимо...

Поиск и замена в бинарном файле
Здравствуйте. Есть у нас в конторе чат, который хранит свои настройки в бинарном файле. По...

Поиск и замена текста в файле
Имеется, допустим, файлик в кодировке 1251: tyutuyt бухгалтера лросодло клиентов апорпвоыпоп...

6
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
26.05.2015, 20:11 2
Цитата Сообщение от next40 Посмотреть сообщение
Есть некий файл который генерит программма: задачка найти в файле определенное слово и заменить его на слово введенное пользователем и все.
Файл в кодировке UTF-8 и может содержать русский шрифт


Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
:: Код универсален для любого содержимого текстового файла
:: (с учётом спецсимволов, пустых и пробельных строк),
:: насколько это возможно для кода пакетного файла.
:: Работает с кодировками Win-1251, OEM-866 и UTF-8.
 
@echo off
setlocal
 
:: Если ничего не вводить, то искомая строка просто удалится.
set/p "dst=Enter Project Name: "
 
set "file=C:\некая папка\некий файл"
set "find_str=template"
set "replace_str=%dst%"
 
 
for /f %%i in ('
 ^<"%file%" find/c /v ""
') do <"%file%">.tmp (
 for /l %%j in (1 1 %%i) do @(
  set x=& set/p x=& if defined x (
   for /f "delims=" %%k in ('cmd/v/c echo "!x:%find_str%=%replace_str%!"') do @(
    echo.%%~k
   )
  ) else (
   echo.
  )
 )
)
>nul move .tmp "%file%"
 
endlocal
exit/b 0
3
0 / 0 / 0
Регистрация: 22.08.2015
Сообщений: 10
23.08.2015, 09:43 3
А как сделать подмену строки текстового файла содержащую , к примеру, 020_122...020_129 на раскрытый числовой ряд, т.е. 020_122, 020_123, 020_124 и так до 020_129?

Добавлено через 9 часов 33 минуты
ComSpec, не могли бы вы подсказать способ на вопрос заданый мной выше?)
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
23.08.2015, 15:30 4
Цитата Сообщение от Belgarion Посмотреть сообщение
ComSpec, не могли бы вы подсказать способ на вопрос заданый мной выше?)

да он глумиться сюда пришёл )
0
0 / 0 / 0
Регистрация: 22.08.2015
Сообщений: 10
23.08.2015, 17:17 5
Добавлено через 1 минуту
Цитата Сообщение от volodin661 Посмотреть сообщение
да он глумиться сюда пришёл )
Я не собирался глумится, просто у меня схожая проблема по работе. Поможете буду очень признателен. Есть list.txt файл, содержимое которого выглядит так: 020_122...020_129, 030_1122 и тому подобное. И вот строки наподобие 020_122...020_129 подразумевают собой от 020_122 до 020_129 и подобные строки нужно найти и заменить на раскрытый числовой ряд (как я писал выше). я понимаю что делать нужно по принципу set /a x+=1 , но как это сделать в моем случае знаний не хватает (дилетант).
0
5984 / 1993 / 323
Регистрация: 10.12.2013
Сообщений: 6,874
24.08.2015, 12:28 6
правильный выбор инструмента определяет успех и простоту решения ( крики ура, браво, слёзы на глазах ).

я бы выбрал скрипт-язык, поддерживающий полноценные регулярные выражения + оператор 'замены'.
( интерпретатор bat_cmd к таковым не относится )
020 _ 122 ... 020 _ 129
вот левая часть( поиск ):
Javascript
1
/ (\d+_) (\d+) \.+ \1 (\d+) /
XML
1
2
3
4
5
020_   ==> ( \d+ _)  ==> $1
122    ==> (\d+)     ==> $2
...    ==> \.+
020_   ==> \1        это ссылка на $1
129    ==> (\d+)     ==> $3



а реализация правой части( замена ) зависит от конкретного инструмента ( powershell, perl, python итд )
1
0 / 0 / 0
Регистрация: 22.08.2015
Сообщений: 10
24.08.2015, 20:11 7
Спасибо за разъяснения!
0
24.08.2015, 20:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2015, 20:11
Помогаю со студенческими работами здесь

Поиск и замена строки в CFG-файле
Добрый день уважаемые обитатели форума! Очень нужна ваша помощь. Есть файл: config.cfg у которого...

Поиск и замена текста в REG-файле
Здравствуйте, помогите пожалуйста написать скрипт имеется файл C:\dir\1.reg нужно в нем найти...

Поиск значений в файле и замена соответствующих в другом файле
Сильно не пинайте, я новичок. Существует 2 файла. В первом (1.txt) текст: 123=qwerty...

Поиск и замена в файле
Здравствует. Есть текстовый файл, в нем есть записи примерно такие:...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru