batch-file
Batch file command line argumenten
Zoeken…
Opdrachtregelargumenten geleverd aan batchbestanden
Batchbestand opdrachtregelargumenten zijn parameterwaarden die worden ingediend bij het starten van de batch. Ze moeten tussen aanhalingstekens staan als ze spaties bevatten. In een actief batchbestand worden de argumenten voor verschillende doeleinden gebruikt, namelijk omleiding naar :labels
, variabelen instellen of opdrachten uitvoeren.
De argumenten worden in het batchbestand gebruikt met %1, %2, ..., %9
.
@echo off
setlocal EnableDelayedExpansion
if not "%1"=="" (
set "dir=%~1" & set "file=%~2"
type !dir!\!file! | find /n /i "True" >nul^
&& echo Success! || echo Failure
)
exit /b
C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"
Success!
Opmerkingen:
- In het bovenstaande voorbeeld worden dubbele aanhalingstekens verwijderd met de argumentmodifier
%~1
. - Lange tekenreeksen worden opgesplitst in meerdere regels met behulp van
^
en er staat een spatie vóór het teken op de volgende regel.
Batchbestanden met meer dan 9 argumenten
Wanneer meer dan 9 argumenten worden opgegeven, kan de opdracht shift [/n]
worden gebruikt, waarbij /n
betekent dat het argument n begint, n tussen nul en acht ligt.
Argumenten doorlopen:
:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args
Merk op dat in het bovenstaande voorbeeld vertraagde expansievariabele i
wordt gebruikt om argumentwaarden toe te wijzen aan variabelenarray. Met call
aanroepopdracht kunnen dergelijke variabele waarden binnen de lus worden weergegeven.
Argumenten tellen:
for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%
Stel een variabele in op het derde argument:
set i=5
call set "path%i%=%%~i"
Verschuivende argumenten tussen haakjes
Laten we het volgende example.bat
en het noemen met argumenten 1
, 2
en 3
:
@echo off
(
shift
shift
echo %1
)
Aangezien de variabele uitbreiding zal veranderen nadat de context van de eindhaken is bereikt, zal de uitvoer zijn:
1
Omdat dit een probleem kan zijn bij het schakelen tussen haakjes om toegang te krijgen tot het argument dat u moet gebruiken:
@echo off
(
shift
shift
call echo %%1
)
nu wordt de uitvoer 3
. Aangezien het CALL
commando wordt gebruikt (wat zal leiden tot extra variabele uitbreiding) met deze techniek, kunnen de toegangsargumenten ook worden geparametriseerd:
@echo off
set argument=1
shift
shift
call echo %%%argument%
met vertraagde uitbreiding:
@echo off
setlocal enableDelayedExpansion
set argument=1
shift
shift
call echo %%!argument!
de output zal zijn
3