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

Jar*_*rek 7 windows batch-file

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

Ran*_*832 10

这将得到参数的计数:

set count=0
for %%a in (%*) do set /a count+=1
Run Code Online (Sandbox Code Playgroud)

要获得实际的最后一个参数,你可以做到

for %%a in (%*) do set last=%%a
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么用参数计数回答?那不是要问的。 (2认同)

Joe*_*oey 9

最简单也许最可靠的方法是只使用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
Run Code Online (Sandbox Code Playgroud)