windows - Hvordan overføres flere params i batch?

Indlæg af Hanne Mølgaard Plasc

Problem



I min batchfil vil jeg sende flere parametre til en anden applikation.


Nu gør jeg det


app.exe \%1 \%2


og det kan kun passere to parametre, men jeg vil videregive alle de parametre, der sendes til batchet (jeg vil hellere ikke skrive \% 1\% 2\% 3\% 4 ... )


Er der nogen magisk måde at gøre det på?

Bedste reference


Der er en magisk måde! Jeg vidste det, men jeg kunne ikke huske det.


dens \%*

Andre referencer 1


Du kan bruge SHIFT-prompten og løbe gennem argumenterne. Her er et demonstrativt eksempel, hvor du vil erstatte den endelige ECHO-prompt med en prompt til at indlæse din ansøgning. [10]


@ECHO OFF

SET PARAMS=

:\_PARAMS\_LOOP

REM There is a trailing space in the next line; it is there for formatting.
SET PARAMS=\%PARAMS\%\%1 
ECHO \%1
SHIFT

IF NOT "\%1"=="" GOTO \_PARAMS\_LOOP

ECHO \%PARAMS\%

PAUSE


Dette kan være nyttigt, hvis du har brug for en slags dynamisk parameter tælling, eller hvis du vil afvise en bestemt parameter.

Andre referencer 2


En anden måde er at bruge en dobbelt citeret parameter. Når du ringer til den anden applikation, bruger du bare \%~N -enheden på kommandolinjen for at fjerne citaterne.


Hvis nogle parametre, du har til hensigt at videregive til ansøgningen, selv er dobbeltnoteret, skal disse citatkarakter gentages to gange.


Her er et illustrationsskript, der bruger den første parameter som applikationens navn og det andet som en kombineret parameterliste, der skal videregives til applikationen:


@ECHO OFF
CALL \%1 \%~2


Her er eksempler på at kalde scriptet til forskellige tilfælde (send en parameter eller flere parametre eller citerede parametre).



  1. Send 1 parameter til appen:


    C:>mybatch.bat app.exe "app\_param"
    C:>mybatch.bat app.exe app\_param
    

  2. Passer flere parametre:


    C:>mybatch.bat app.exe "app\_param1 app\_param2 app\_param3"
    

  3. Videregive en parameter, der indeholder mellemrum (og så skal citeres):


    C:>mybatch.bat app.exe """parameter with spaces"""
    

  4. Et kombineret eksempel: nogle parametre er med mellemrum, andre er 't:


    C:>mybatch.bat app.exe "param\_with\_no\_spaces ""parameter with spaces"" another\_spaceless\_param"