Пакетное использование "=" в качестве строки при передаче аргумента - PullRequest
0 голосов
/ 16 марта 2019

funtion.bat echo variable

set "Var1=%1"
set "Var2=%2"
set "Var3=%3"

echo %Var1% %Var2% %Var3%

Я использую пакет, который вызывает эту функцию, передавая 3 аргумента

call function.bat blabla= argument2 TEST.txt

Как вы видите, мой первый аргумент имеет знак равенства,Но я хочу использовать его как строку, а не как оператор.

Когда я запускаю пакет, это результат, который я получаю:

blabla
argument2
TEST.txt

Это результат, который я хочу:

blabla=
argument2
TEST.txt

У кого-нибудь есть идеи, как получить "blabla ="?

1 Ответ

1 голос
/ 16 марта 2019

С cmd /? в cmd:

Специальные символы, требующие кавычек:
<space>
&()[]{}^=;!'+, ~ `

Как видите, вы должны цитировать почти все , которое содержит =, потому что оно используется в качестве разделителя.Вам следует запустить командный файл с помощью команды:

call function.bat "blabla=" "argument2" "TEST.txt"

в cmd, а затем удалить двойные кавычки для каждого аргумента, используя следующий код (модификатор ~):

set "Var1=%~1"
set "Var2=%~2"
set "Var3=%~3"

echo %Var1% %Var2% %Var3%

и это должно работать.Этот способ рекомендуется для лучшей практики.Делай это всегда.

...