获取Windows批处理文件中的最后一个命令行参数

时间:2011-04-27 13:49:47

标签: windows batch-file

我需要将最后一个参数传递给windows批处理脚本,我该怎么做?

3 个答案:

答案 0 :(得分:10)

这将获得参数计数:

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

要获得实际的最后一个参数,您可以

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

请注意,如果命令行具有不平衡的引号,则会失败 - 命令行由for重新解析,而不是直接使用用于%1等的解析。

答案 1 :(得分:8)

最简单也许最可靠的方法是使用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

答案 2 :(得分:0)

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%