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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Замена одного текста на другой включая кавычки путем VBS через запуск команды в коман

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


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

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


Изменения
Автор: vodashk@vk
Дата: 02-07-2023
Описание: уточнение
Замена одного текста на другой включая кавычки путем VBS

Доброго Всем, как выполнить решение замены текста, включая те где содержат еще и кавычки
текст в файле
MAX_num=10 заменить на MAX_num=auto (замена происходит)
max_time="600" заменить на max_time="0" (замена не происходит)

Есть запуск файла VBS через cmd но он е обрабатывает текст где есть кавычки


Код: Выделить весь код
@echo off & title replace & color 1F
setlocal
prompt $G

cscript //Nologo replace.vbs "default_temp" "max_time="600"" "max_time="0""
cscript //Nologo replace.vbs "default_temp" "MAX_num=10" "MAX_num=auto"
cscript //Nologo replace.vbs "default_temp" "use_net=no" "use_net=1"
cscript //Nologo replace.vbs "default_temp" "rom_on=off" "rom_on=on"
Есть файл VBS с именем replace.vbs с кодом замены текста с одного на другой в файле, где по видимому нужно дописать функцию обработки текста с кавычками

Код: Выделить весь код
Const ForReading = 1    
Const ForWriting = 2
 
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
 
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText  'WriteLine adds extra CR/LF
objFile.Close

Отправлено: 23:27, 02-07-2023

 

Старожил


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

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


перепишите или напишите с нуля заменитель текста на повершелл
это
будет легче чем обучить вбскрипт не глотать кавычки в агрументах

Отправлено: 01:24, 03-07-2023 | #2



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

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


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


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

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


Цитата Serguei Kouzmine:
повершелл »
и в powershell не вышло у меня)

Отправлено: 01:46, 03-07-2023 | #3


Старожил


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

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


пробуйте сильнее

Код: Выделить весь код
'num="100"' -replace 'num=\"100\"' , 'num = "0"'


num = "0"
Код: Выделить весь код
'num="100"' -replace 'num="100"' , 'nu
m = "0"'


num = "0"
- уверяю вас vbscript с кавычками это тупик

Отправлено: 02:20, 03-07-2023 | #4


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


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

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


Цитата Serguei Kouzmine:
уверяю вас vbscrip »
пока мучался сам сделал, зашел сюда потом увидел у вас, а я правильно сделал целиком код и текст не нарушится? Думал поделиться с ответом решением через cmd

PowerShell -Command "(gc "default_temp") -replace 'max_time=\"600\"' , 'max_time=\"0\"' | sc "default_temp""

и вопрос он не портит кодировку и текст оставляет в той же кодировке как и был и не портит его содержимое

А так то результат положительный

Отправлено: 02:52, 03-07-2023 | #5


Старожил


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

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


Цитата vodashk@vk:
вопрос он не портит кодировку и текст оставляет в той же кодировке как и был »
- помомум незачем давать ему шанс что нибудь испортить - если можете укажите кодировку явно
и скрипт по моему всегда лучше чем вводить все в комадной строке поэтому подозреваю такое увлечение алиасами

Отправлено: 05:54, 03-07-2023 | #6


Deadooshka


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

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


Цитата vodashk@vk:
"max_time="0"" »
в cmd кавычки внутри кавычек экранируют обычно дублированием "max_time=""0"""

Отправлено: 08:30, 03-07-2023 | #7


Старожил


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

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


Sham,
попробуйте добавить в скрипт
Код: Выделить весь код
WScript.echo strOldText
увидите

Код: Выделить весь код
cscript /Nologo replace.vbs "a.txt" "max_time=""600""" "max_time=""0"""

Код: Выделить весь код
max_time=600
кавычки исчезли
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:36, 03-07-2023 | #8


Deadooshka


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

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


Цитата Serguei Kouzmine:
кавычки исчезли »
да, реальная проблема. Я бы заменил на двойные одинарные '' ("max_time=''600''") и в скрипте менял бы replace'ом: replace(Wscript.Arguments(1), "''", """"). На SO вообще предлагают лезть в Win32_Process за исходной строкой - это на любителя.

Отправлено: 17:03, 03-07-2023 | #9


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


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

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


Sham, туда же и меня направило)
помог искусственный интеллект с ответом как ни странно

взялся за такую строку и решил сменить, все получилось
max_time="60" с этим получилось

при этом другие значения не затрагиваются
типа таких
mode="0"
mode='60'
mode=60
mode='600'
mode="600"
"60"
'60'

батник
Код
Код: Выделить весь код
@echo off
cscript //NoLogo replace.vbs "config.xml" "max_time='60'" "max_time='0'"
pause
vbs
HTML код: Выделить весь код
Код Dim filePath, searchString, replaceString filePath = WScript.Arguments.Item(0) searchString = Replace(WScript.Arguments.Item(1), "'", Chr(34)) replaceString = Replace(WScript.Arguments.Item(2), "'", Chr(34)) Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile(filePath) strContent = objFile.ReadAll objFile.Close strContent = Replace(strContent, searchString, replaceString) Set objFile = objFSO.OpenTextFile(filePath, 2) objFile.Write strContent objFile.Close


Последний раз редактировалось vodashk@vk, 18-07-2023 в 00:10. Причина: уточнил


Отправлено: 00:04, 18-07-2023 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] замена подстрок из одного файла в другой vngreez@vk Скриптовые языки администрирования Windows 3 19-03-2017 10:48
CMD/BAT - [решено] Замена текста из одного файла в другом blackeangel Скриптовые языки администрирования Windows 6 20-11-2015 11:07
Разное - Запуск скрипта vbs на удаленной машине через wmi Kwoon Microsoft Windows 7 8 22-01-2015 11:00
2007 - [решено] Поиск и перенос текста из одного документа в другой... Voron-orel Microsoft Office (Word, Excel, Outlook и т.д.) 3 20-08-2013 20:03
VBS/WSH/JS - [решено] Обработка команды в CMD через VBS KaKTuZ49 Скриптовые языки администрирования Windows 2 12-12-2011 14:37




 
Переход