Получить последний аргумент командной строки в пакетном файле Windows - PullRequest
6 голосов
/ 27 апреля 2011

Мне нужно передать последний аргумент в пакетный скрипт Windows, как я могу это сделать?

Ответы [ 3 ]

10 голосов
/ 27 апреля 2011

Получит количество аргументов:

set count=0
for %%a in (%*) do set /a count+=1

Чтобы получить последний аргумент, вы можете сделать:

for %%a in (%*) do set last=%%a

Обратите внимание, что это не удастся, если командная строка не сбалансированакавычки - командная строка анализируется for вместо непосредственного использования синтаксического анализа, используемого для %1 и т. д.

8 голосов
/ 27 апреля 2011

Самый простой и, возможно, самый надежный способ - просто использовать собственный синтаксический анализ cmd для аргументов и shift до тех пор, пока их больше не будет.

Так как это уничтожает использование %1 и т. Д., Вы можете сделать это в подпрограмме:

@echo off
call :lastarg %*
echo Last argument: %LAST_ARG%
goto :eof

:lastarg
  set "LAST_ARG=%~1"
  shift
  if not "%~1"=="" goto lastarg
goto :eof
0 голосов
/ 07 октября 2018
set first=""
set last=""
for %%a in (%*) do (
SETLOCAL ENABLEDELAYEDEXPANSION
if !first!=="" (set first=!last!) else (set first=!first! !last!)
set last=%%a

)
ENDLOCAL & set "last=%last%" & set "first=%first%"
echo %last%  "and" %first%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...