В командной строке Windows я пытаюсь заменить пространство в set string=Hello World
на строку %20
. Наивно пытаться использовать строковый литерал% 20, как это:Как заменить символ процента на cmd.exe?
set string=%string: =%20%
приводит HelloWorld20%
. Попытка использовать экранирующий символ ^
как это:
set string=%string: =^%20%
также приводит к HelloWorld20%
. Пытаясь избежать %
удваивая это следующим образом:
set string=%string: =%%20%
приводит HelloWorld%20%
. Я также попытался использовать другую переменную, чтобы сделать замену, как это:
set r=%20
set string=%string: =%r%%
, что приводит к HelloWorldr%%
.
Я нашел this, который обрабатывает экранирование процентов символов в переменных. Я также нашел this, который обрабатывает экранированный ввод процентов символов. Но ни один из них не применяется к замене строк.
A tutorial/docu page for the Windows cmd.exe, который я нашел в Интернете, говорит мне, что у меня правильный синтаксис, но не распространяется на замену символами процента.
После прочтения всех тех, я пытался:
setlocal EnableDelayedExpansion
set string=!string: =%20!
что приводит к !string: =%20!
.
У меня нет идей, вы можете помочь?
Это приводит к 'Hello World str2'. Помните: я делаю это в cmd.exe не из файла '.bat' – nfs
@SheridanVespo, вы правы, и я сделал редактирование. Ich liebe den Scheiß! ':-)' – Endoro
Абсолютный спасатель. Не могли бы вы прокомментировать пример, поскольку 'for()' немного черная магия. Постскриптум для тех, кто хочет сделать это в пакетном скрипте, есть: https://stackoverflow.com/questions/2772456/string-replacement-in-batch-file. –