Запуск WScript.exe scr.vbs «%variable%», не экранирует точку. Как экранировать?
Десктопное Приложение отдает переменную при вызове функции. Ее функционала не достаточно и была "допилина" кнопка через реестр, нажимая на нее заводится скрипт, которому передавалась переменная, как аргумент %variable%, все бы хорошо, но туда стали попадать данные с доменами, с точками, которые ковычками не экранируются ,значит <> и это = экранируется а точка - нет. Пишет .ru неизвестный формат.
Я не силен в cmd, почему cmd, потому что.
Как передать аргумент экранируя все? Добраться до %variable% не возможно. Из реестра, потому что вызов скрипта из cmd работает исправно, интерпретатор cmd.exe ковычками экранирует все.
Не понятно излагаете.
Куда стали попадать данные с доменами? В переменную? А до этого какие были данные?
Кавычки в cmd не экранируют. Они не для этого предназначены.
Пишет .ru неизвестный формат.
Какой формат известный?
Приведите пример правильного содержимого переменной и не правильного.
Добраться до variable вы можете анализируя параметры полученные scr.vbs.
Так же можно для теста запускать не scr.vbs, а какой-нибудь простой батник (cmd.exe /c file.bat "%variable%"), который будет выводить полученные параметры. Например такой:
@echo off
echo [%*]
Не понятно, чем вам помешала точка. Точка не является спец.символом cmd, ее не требуется экранировать.
Как данные попадают в переменную окружения? В принципе переменную окружения можно и не передавать параметром, как батник, так и VBS могут читать переменные окружения встроенными средствами.
res2001, как аргумент попадают в скрип vbs в реестре. Така хитрость которую сложно раскрыть.
Самое интересное почти все виды скриптов не могут принять спец символы в аргумент .hta .ps .bat .py
Попробуйте передать без кавычек.
%variable% вероятнее всего передается, не как строка.
Игорь Mакаров - похоже задача перегружена и вы с четким описанием проблемы не справляетесь не говоря о том чтоб решить
попробуйте упростить задачу и объяснить что именно не работает
сергей кузьмин, Если убрать кавычки в echo "%~1" - будет ошибка, из-за спец.символов.
В этом примере символы <> можно экранировать с помощью ^, т.е. передавать аргумент так: arg_echo.cmd "^>^<=@"
Вообще в батниках бороться со спец.символами может быть довольно тяжело.
Но если передавать параметры в VBS, как у автора, то там уже все намного проще, т.к. спец.символа cmd.exe не играют никакой роли в vbs - достаточно взять в кавычки передаваемую строку.
Например, test_arg.vbs:
Set objArgs = Wscript.Arguments
Wscript.Echo objArgs(0)
res2001, cs версию не проверил.
Конечно если я из окна cmd или powershell запускаю мой vbs экранирует спец символы. Можно даже без ковычек передавать аргумент
set variable=inokentiy-usa
src.vbs %variable% it wrk
Я все это прекрасно знаю, это первая страница любого мануала "Виндоус скриптинга" доберусь до ПК пришлю, как это из реестра выглядит.
Вы поймёте, это баг винды
сорян, я думал все знают как к блокноту добавить свою кнопку в реестре