|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск замена текста |
|
CMD/BAT - [решено] Поиск замена текста
|
Новый участник Сообщения: 24 |
гм неполистал форум прошу прощения на следующей страницы похожая тема. если не выйдет. отпишу нижу
|
|
Отправлено: 01:39, 25-03-2012 |
Старожил Сообщения: 235
|
Профиль | Отправить PM | Цитировать помогите, пожалуйста решить этот вопрос
http://forum.oszone.net/post-2782789.html#post2782789 спасибо |
Отправлено: 17:46, 06-12-2017 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 100
|
Профиль | Отправить PM | Цитировать Что-то пошло не так. Нужно в текстовом файле найти текст "ПоказательТипа=0" и заменить его на "ПоказательТипа=", но после выполнения скрипта
получаю в файле "0=ПоказательТипа==0", так понимаю, что это из-за того что интерпритатор считает "=" служебным символом, а не текстом. Пробовал заключать все значение в кавычки и экранировать "^=", результат тот же или никакой. Как заставить интерпретатор воспринимать всю строку как текстовое выражение? |
Отправлено: 13:16, 17-07-2019 | #12 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off cls Set "FileIn=Z:\Где файл\1.txt" Set "Fin=ПоказательТипа=0" Set "Rep=ПоказательТипа=" mshta vbscript:execute("Set FSO = CreateObject(""Scripting.FileSystemObject"") : Set FF = FSO.OpenTextFile(""%FileIn%"", 1) : InTxt = FF.ReadAll : FF.Close : Set FF = FSO.OpenTextFile(""%FileIn%"", 2, True) : FF.Write Replace(InTxt, ""%Fin%"", ""%Rep%"") : FF.Close :close") Pause Exit /B Чтобы решить задачу для конкретного построения файла средствами CMD прикрепите к сообщению Ваш файл 1.txt, надо понимать, например, текст "ПоказательТипа=0" единственный в строке или он внутри другого текста, есть ли другие строки, содержащие =, есть ли строки без = |
------- Последний раз редактировалось megaloman, 17-07-2019 в 18:28. Отправлено: 15:39, 17-07-2019 | #13 |
![]() Пользователь Сообщения: 100
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
|
||
Отправлено: 08:25, 18-07-2019 | #14 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать UncleD, Основываясь на Вашем файле, задачу формулирую так:
Есть текстовый файл без пустых строк в 1251 (Windows) кодировке. Надо заменить в файле строку с указанным текстом на другую. @Echo Off cls >NUL Chcp 1251 Set "FileIn=Z:\Где файл\11.txt" Set "Find=ПоказательТипа=0" Set "Repl=ПоказательТипа=" Set /A NN=1000000, N=0 FOR /F "usebackq tokens=1* delims=:" %%i IN (`2^>nul FINDSTR /R /N /C:".*" "%FileIn%"`) DO ( Set /A N=%NN%+%%i &Call Set "@@@%%N%%=%%j" ) FOR /F "usebackq skip=2 tokens=1* delims=[]" %%i IN (`2^>nul Find /I /N "%Find%" "%FileIn%"`) DO ( Set /A M=%NN%+%%i &Call Set "@@@%%M%%=%Repl%" ) >"%FileIn%" (FOR /L %%a IN (1000001,1,%N%) DO Call Echo %%@@@%%a%%) Pause GoTo :Eof @Echo Off cls >nul Chcp 1251 Set "FileIn=Z:\Где файл\11.txt" Set "Fin=ПоказательТипа=0" Set "Rep=ПоказательТипа=" mshta vbscript:execute("Set FSO = CreateObject(""Scripting.FileSystemObject"") : Set FF = FSO.OpenTextFile(""%FileIn%"", 1) : InTxt = FF.ReadAll : FF.Close : Set FF = FSO.OpenTextFile(""%FileIn%"", 2, True) : FF.Write Replace(InTxt, ""%Fin%"", ""%Rep%"") : FF.Close :close") Pause Exit /B Постскриптум: Обнаружил, что первый скрипт из приведенных (чистый CMD) Вам не годится из-за наличия в тексте служебных для CMD символов. Например: в 80 строке пропадает %. Какие еще извращения возможны- не берусь судить, поэтому наилучший вариант Скрипт.VBS |
------- Последний раз редактировалось megaloman, 18-07-2019 в 10:38. Отправлено: 10:18, 18-07-2019 | #15 |
![]() Пользователь Сообщения: 100
|
Профиль | Отправить PM | Цитировать megaloman, спасибо, все сработало.
В итоге воспользовался вторым вариантом, то есть этим: @Echo Off cls >nul Chcp 1251 Set "FileIn=Z:\Где файл\11.txt" Set "Fin=ПоказательТипа=0" Set "Rep=ПоказательТипа=" mshta vbscript:execute("Set FSO = CreateObject(""Scripting.FileSystemObject"") : Set FF = FSO.OpenTextFile(""%FileIn%"", 1) : InTxt = FF.ReadAll : FF.Close : Set FF = FSO.OpenTextFile(""%FileIn%"", 2, True) : FF.Write Replace(InTxt, ""%Fin%"", ""%Rep%"") : FF.Close :close") Pause Exit /B Еще нашел в сети vbs, через который вызываю свой батник, а он прячет окно командной строки, ну просто чтобы не пугать пользователя регулярно выскакивающими непонятками, хотя решение и не очень элегантное. Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "replace.bat" & Chr(34), 0 Set WshShell = Nothing Еще раз благодарю. |
Отправлено: 15:26, 18-07-2019 | #16 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать UncleD, нормальные герои всегда идут в обход?
![]() |
------- Отправлено: 15:35, 18-07-2019 | #17 |
![]() Пользователь Сообщения: 100
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 08:01, 19-07-2019 | #18 |
![]() Пользователь Сообщения: 100
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
|
|
Отправлено: 12:24, 19-07-2019 | #19 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать UncleD, откуда берётся имя файла? И в чём затруднение вставить vbs скрипт в планировщик, вроде Вы это можете?
Вот доработка vbs-скрипта c целью исключения перезаписи входного файла в случае, если строка для замены не найдена (то есть, на практике, ранее эта замена уже планировщиком была сделана) FileIn = "Z:\Где файл\11.txt" Fin = "ПоказательТипа=0" Rep = "ПоказательТипа=" Set FSO = CreateObject("Scripting.FileSystemObject") Set FF = FSO.OpenTextFile(FileIn, 1) InTxt = FF.ReadAll FF.Close If InStr(1, InTxt, Fin) <> 0 Then Set FF = FSO.OpenTextFile(FileIn, 2, True) FF.Write Replace(InTxt, Fin, Rep) FF.Close End If |
------- Последний раз редактировалось megaloman, 19-07-2019 в 15:22. Отправлено: 13:55, 19-07-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск и замена текста | ajakzs | Скриптовые языки администрирования Windows | 18 | 08-08-2013 16:10 | |
CMD/BAT - Поиск и замена текста через bat | Lilless | Скриптовые языки администрирования Windows | 0 | 28-02-2012 02:08 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках | Gawr33 | Скриптовые языки администрирования Windows | 11 | 23-04-2011 23:09 | |
[решено] Поиск и замена текста в файле | TERMINAL | AutoIt | 6 | 16-03-2011 17:49 | |
C/C++ - [решено] Поиск и замена текста | Simpler | Программирование и базы данных | 15 | 01-12-2010 16:03 |
|