获取windows批处理文件中的最后一个命令行参数
我需要获取传递给windows批处理脚本的最后一个参数,如何才能做到这一点?这将获取参数的计数:获取windows批处理文件中的最后一个命令行参数,windows,batch-file,Windows,Batch File,我需要获取传递给windows批处理脚本的最后一个参数,如何才能做到这一点?这将获取参数的计数: set count=0 for %%a in (%*) do set /a count+=1 要获得实际的最后一个参数,可以执行以下操作 for %%a in (%*) do set last=%%a 请注意,如果命令行有不平衡的引号,这将失败-命令行由重新解析为,而不是直接使用用于%1等的解析。最简单、也许也是最可靠的方法是只使用cmd自己的参数解析和shift直到没有更多在那里 由于这会破坏
set count=0
for %%a in (%*) do set /a count+=1
要获得实际的最后一个参数,可以执行以下操作
for %%a in (%*) do set last=%%a
请注意,如果命令行有不平衡的引号,这将失败-命令行由
重新解析为,而不是直接使用用于%1
等的解析。最简单、也许也是最可靠的方法是只使用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
看你为什么回答这个论点?那不是被问到的。
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%