Аргумент разбора, представляющий собой строку, разделенную запятыми, передается в командный файл - PullRequest
0 голосов
/ 11 апреля 2019

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

myBatch.bat ".git,*.tmp,file.c"

Внутри командного файла мне нужно написать код, который анализирует аргумент, передаваемый в командной строке, и разбивает его следующим образом:

@echo off
set excludes=%~1
set excludes_cmd=""

FOR /f "tokens=1* delims=," %%a IN ("%excludes%") DO (
   set "excludes_cmd=%%excludes_cmd%% --exclude %%~a"
)

Итак, в конце, когда я выведу переменную 'exclude_cmd', я получу это:

--exclude .git --exclude *.tmp --exclude file.c

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

Придумал способ, аналогичный Compo, просто вставив ваши примеры в качестве значений по умолчанию.

@echo off
if "%~1"=="" "%~f0" ".git,*.tmp,file.c"
set "excludes=,%~1"
set "excludes_cmd=%excludes:,= --exclude %"
set excludes
excludes=,.git,*.tmp,file.c
excludes_cmd= --exclude .git --exclude *.tmp --exclude file.c
2 голосов
/ 11 апреля 2019

Вы должны быть в состоянии сделать это с помощью расширения и замены основных переменных:

@Echo Off
Set "excludes=%~1"
If Not Defined excludes GoTo :EOF
Set "excludes_cmd=--exclude %excludes:,= --exclude %"

Переменная %excludes_cmd% должна содержать требуемое содержимое.

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