Я пытаюсь заменить все экземпляры ~
{~}
в пакетном скрипте, чтобы VBScript не предполагал, что я хочу нажать Enter, когда я передаю его sendKeys, однако переменная продолжает заменяться литеральной строкой, предназначенной для замени это.Как избежать «~» в команде set/replace?
Например,
rem Intended function;
rem input = Hello~world.
rem output = Hello{~}world.
Однако каждый раз, когда он либо ничего не делает, или устанавливает refVar до символьной строки refVar:~={~}
.
Вот что я пробовал;
set refVar=!refVar:~={~}!
rem Also
set refVar=%refVar:~={~}%
rem and...
set refVar=%refVar:^~=^{^~^}%
rem and of course;
set refVar=!refVar:^~=^{^~^}!
rem and even:
set "pre=~"
set "post={~}"
set refVar=%refVar:!pre!=!post!%
rem and the same set commands with;
set refVar=!refVar:%pre%=%post%!
Я пропустил способ избежать этого? Я почти уверен, что это связано с ~
, являющимся позиционным символом в подобной команде.
Я понимаю, что есть способ исправить это в VBScript, но это мешает мне иметь ограничение без видимых обходных решений.
Это действительно аккуратный ответ. Лучше использовать аргументы для строки поиска и замены, чтобы упростить ее использование. –
Ха-ха, я знаю команды командного сценария по большей части, но я предполагаю, что команды справки для других ищут тот же ответ. В любом случае, спасибо, рад узнать, что решение - это не просто определенный порядок разделителей, которые я не смог попробовать. – Bloodied
@Arescet Да, я добавил список используемых команд и как получить помощь по ним для всех, кто читает этот ответ, поскольку я почти всегда делаю ответы на свои ответы в пакете. Для меня было очевидно, что вы хорошо знаете все эти команды. – Mofi