Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
ruslan_fi
3 / 3 / 0
Регистрация: 29.10.2012
Сообщений: 67
1

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

15.10.2014, 08:53. Просмотров 2088. Ответов 5
Метки нет (Все метки)

Имеется, допустим, файлик в кодировке 1251:
Код
tyutuyt бухгалтера
лросодло клиентов
апорпвоыпоп ываываыаыва
Нужно как-то заменить по всему файлу слово "клиентов" на "бухгалтера".
Мой код не смог заменить.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
setlocal enabledelayedexpansion
chcp 1251
SET ifile=%1
SET tfile=%ifile%.tmp
SET find=клиентов
SET replace=бухгалтера
IF EXIST %tfile% DEL /Q %tfile%
 
FOR /F "tokens=* delims=, " %%a IN (%ifile%) DO ( 
    set line=%%a
    set line=%line:клиентов=бухгалтера%
    echo !line!>> %tfile%
)
 
MOVE /Y %tfile% %ifile%
 
EXIT /B 0
Ни где ошибку не нашел. Может вы носом ткнёте?

Совсем забыл. На выходе получаю вот это:
Код
клиентов=бухгалтера
клиентов=бухгалтера
клиентов=бухгалтера
Не пойму опять же с чего вдруг?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2014, 08:53
Ответы с готовыми решениями:

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

Поиск и замена текста в файле, в содержимом которого имеются специальные символы
Поискал в инете, толкового ответа не нашел. Суть вопроса... Есть текстовый...

Замена текста в файле
Народ, помогите с батником. Начал учиться писать .bat для себя. В итоге...

[bat] замена текста в файле
добрый вечер. есть файл вида: #example.sln Microsoft Visual Studio...

Множественная замена текста в файле
Добрый день! Нужно в выбранном файле сделать множественные замены текста (5...

5
Dragokas
Эксперт WindowsАвтор FAQ
17049 / 7106 / 859
Регистрация: 25.12.2011
Сообщений: 10,918
Записей в блоге: 16
15.10.2014, 10:46 2
1) замените

Bash
1
2
set line=%line:клиентов=бухгалтера%
echo !line!>> %tfile%
на
Bash
1
>> "%tfile%" !line:клиентов=бухгалтера!
2) Сохраните файл в кодировке ANSI (Windows-1251).
1
ruslan_fi
3 / 3 / 0
Регистрация: 29.10.2012
Сообщений: 67
16.10.2014, 09:03  [ТС] 3
Bash
1
>> "%tfile%" !line:клиентов=бухгалтера!
Вернул мне пустой файл
Bash
1
echo !line:клиентов=бухгалтера!>> "%tfile%"
А вот это - самое оно!

Добавлено через 21 час 56 минут
А вот сейчас добавил один скрипт в другой и какая то лажа пошла. Вот полный текст получившегося скрипта:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
set /P var="Установка на клиентском компьютере - 1, Установка операционисту - 2."
if %var%==2 (GOTO Settings)
set do=%COMPUTERNAME:~1,4%
regedit / "счет_%do%.reg"
pause
exit /b
 
:Settings
chcp 1251
SET ifile=Settings.ini
SET tfile=%ifile%.tmp
SET find=клиентов
SET replace=бухгалтера
IF EXIST %tfile% DEL /Q %tfile%
 
FOR /F "tokens=* delims=, " %%a IN (%ifile%) DO ( 
    set line=%%a
    echo !line:%find%=%replace%!>> "%tfile%"
)
 
MOVE /Y %tfile% %ifile%
exit /b
на выходе почему то получаю файл в кодировке 866 со строками:
Код
!line:клиентов=бухгалтера!
!line:клиентов=бухгалтера!
!line:клиентов=бухгалтера!
сам скрипт в кодировке также сохранен 866, иначе вопрос о выборе установки будет крякозябрами.
Settings.ini в кодировке 1251. Как вообще быть в такой ситуации?
0
ComSpec
3409 / 1953 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
16.10.2014, 09:14 4
ruslan_fi,
Bash
1
setlocal enabledelayedexpansion
.
1
ruslan_fi
3 / 3 / 0
Регистрация: 29.10.2012
Сообщений: 67
16.10.2014, 09:48  [ТС] 5
ComSpec, спасибо!
И еще один глупый вопрос.
Почему когда я набрал "2" на клаве на строке 2 предыдущего скрипта, у меня не выполняются строки 4-7?
Ухожу по GOTO и после него я же должен вернуться на строку 4 и продолжить выполнять код до его окончания?
Программирую крайне редко, поэтому такие, возможно, глупые вопросы...
0
ComSpec
3409 / 1953 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
16.10.2014, 10:31 6
ruslan_fi, замените третью строку в Вашем коде на строку
Bash
1
if %var%==2 (call :Settings)
.
0
16.10.2014, 10:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2014, 10:31

Замена текста в тхт файле
Добрый день! Помогите отредактировать файл. Есть текстовик c 100500 строками,...

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru