можно ли переопределить параметр линии CMD - PullRequest
0 голосов
/ 20 мая 2019

Я ищу, как повторно определить последний параметр строки CMD как ноль во время выполнения командного файла.Мои попытки переопределить% n, где n - последний параметр, так как null потерпел неудачу

Пакетный файл a.bat

@echo 1=%1 2=%2 3=%3 4=%4 5=%5
set %%5%=""

@echo 1=%1 2=%2 3=%3 4=%4 5=%5
set %%5%=

@echo 1=%1 2=%2 3=%3 4=%4 5=%5

Результат

a one two three four five


1=one 2=two 3=three 4=four 5=five

set %5=""

1=one 2=two 3=three 4=four 5=five

set %5=

1=one 2=two 3=three 4=four 5=five

%5 не меняется

Ответы [ 2 ]

2 голосов
/ 20 мая 2019

Если у вас есть только 5 аргументы, вы можете отменить - define пятый, (последний) , один с помощью Shift, (введите shift /? в командной строкеза информацию об использовании) .Это фактически переместит пустое / un- defined значение %6 в положение %5.

Пример:

@Echo Off
Echo 1=%1 2=%2 3=%3 4=%4 5=%5
Shift /5
Echo 1=%1 2=%2 3=%3 4=%4 5=%5
Pause

Если вы хотите Set /Переведите define параметр / аргумент в другое значение, тогда вы можете сделать это, используя оператор Call:

Пример:

@Echo Off
Echo 1=%1 2=%2 3=%3 4=%4 5=%5
Call :Sub %1 %2 %3 %4 cinco
Pause
GoTo :EOF

:Sub
Echo 1=%1 2=%2 3=%3 4=%4 5=%5
Exit /B

Кроме этого у вас мало другого выборано Set ваши аргументы / параметры для переменных, а затем переопределите их по мере необходимости:

Пример:

@Echo Off
Set "one=%~1"
Set "two=%~2"
Set "three=%~3"
Set "four=%~4"
Set "five=%~5"
Echo one=%one% two=%two% three=%three% four=%four% five=%five%
Set "five=cinco"
Echo one=%one% two=%two% three=%three% four=%four% five=%five%
Pause
0 голосов
/ 21 мая 2019

"Мне любопытно, почему вы думаете, что вам нужно очистить определение% 5"

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

Я хочу добавить к скрипту префикс, который определяет параметр 'test', чтобы установить переменную test = "@ echo", а затем удалить "test", чтобы скрипт не обнаружил ошибку параметра или вел себя неправильно.

Сценарий будет изменен для добавления префикса к каждой строке 'action'% test%. Сценарий будет запускаться как есть, когда нет тестового параметра, и когда он присутствует, он позволит мне создать набор вариантов использования, которые можно использовать для объяснения того, что делает сценарий.

Спасибо за помощь, SHIFT / n, где n - последний параметр, сделает то, что мне нужно.

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