Как вызвать параметр в командном файле с запятой-разделителем - PullRequest
12 голосов
/ 16 ноября 2011

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

Я хочу это как этот пример.

У меня есть text.bat со скриптом:

@echo off
set test=%1
echo Sample %test% batch.

Я хочу запустить пакет следующим образом:

c:\text.bat this,is,sample

и я ожидаю такого результата:

Sample this,is,sample batch.

Есть идеи, как мне этого добиться?

Спасибо.

Ответы [ 2 ]

16 голосов
/ 16 ноября 2011

Вау!Я не знал, что запятые вели себя таким образом.

У вас есть два варианта.

Вы можете использовать этот скрипт:

@echo off
set test=%~1
echo Sample %test% batch.

И запустить его с помощью:

C:\text.bat "this,is,test"

%~1 представляет первый аргумент без кавычек.Кавычки группируют список, разделенный запятыми, как один аргумент.

Или

Вы можете использовать этот скрипт:

@echo off
set test=%*
echo Sample %test% batch.

И запустить егоwith:

C:\text.bat this,is,test

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

10 голосов
/ 16 ноября 2011

В пакетных файлах разделителями параметров, кроме пробелов, являются запятая, точка с запятой и знак равенства, поэтому прямого способа сделать это не существует. Единственный вариант - заключить параметр в кавычки: c:\text.bat "this,is,sample" и взять параметр с% ~ 1, чтобы исключить кавычки: set test=%~1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...