Få sidste kommandolinjeparametre i Windows-batchfil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har brug for at få det sidste argument til Windows-batch script, hvordan kan jeg gøre det?

Bedste reference


Den nemmeste og måske mest pålidelige måde ville være at bare bruge cmd s egen parsing til argumenter og shift så indtil der ikke mere er der.


Da dette ødelægger brugen af ​​\%1 osv. Kan du gøre det i en subrutine:


@echo off
call :lastarg \%*
echo Last argument: \%LAST\_ARG\%
goto :eof

:lastarg
  set "LAST\_ARG=\%~1"
  shift
  if not "\%~1"=="" goto lastarg
goto :eof

Andre referencer 1


Dette får antallet af argumenter:


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


For at få det faktiske sidste argument, kan du gøre


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


Bemærk, at dette vil mislykkes, hvis kommandolinjen har ubalancerede citater - kommandolinjen bliver analyseret igen af ​​for i stedet for direkte ved hjælp af parsing brugt til \%1 osv.