我需要将最后一个参数传递给windows批处理脚本,我该怎么做?
答案 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%