Ricerca…


Argomenti della riga di comando forniti per i file batch

Gli argomenti della riga di comando del file batch sono valori dei parametri inviati all'avvio del batch. Dovrebbero essere racchiusi tra virgolette se contengono spazi. In un file batch in esecuzione, gli argomenti vengono utilizzati per vari scopi, ad esempio il reindirizzamento a :labels , impostazione di variabili o comandi in esecuzione.

Gli argomenti sono indicati nel file batch utilizzando %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!

Gli appunti:

  • Nell'esempio precedente, le virgolette vengono rimosse utilizzando il modificatore argomento %~1 .
  • Le stringhe lunghe sono divise in più righe usando ^ , e c'è uno spazio prima del carattere nella riga successiva.

File batch con più di 9 argomenti

Quando vengono forniti più di 9 argomenti, è possibile utilizzare il comando shift [/n] , dove /n significa iniziare all'ennesimo argomento, n è compreso tra zero e otto.

Ripetizione degli argomenti:

:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args

Nota, nell'esempio sopra riportato, la variabile di espansione i viene utilizzata per assegnare valori di argomento alla matrice di variabili. Il comando call consente di visualizzare tali valori variabili all'interno del loop.

Argomenti di conteggio:

for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%

Imposta una variabile sull'argomento n:

set i=5
call set "path%i%=%%~i"

Spostamento degli argomenti tra parentesi

Consente di avere il seguente example.bat e chiamarlo con gli argomenti 1 , 2 e 3 :

@echo off

(
    shift
    shift
    echo %1
)

Poiché l'espansione della variabile cambierà dopo il raggiungimento del contesto delle parentesi finali, l'output sarà:

1

Poiché questo potrebbe essere un problema quando ti sposti tra parentesi per accedere all'argomento dovrai usare la chiamata:

@echo off

(
    shift
    shift
    call echo %%1
) 

ora l'uscita sarà 3 . Dato che il comando CALL è usato (che porterà ad un'ulteriore espansione di variabili) con questa tecnica gli argomenti che accedono possono anche essere parametrizzati:

@echo off

set argument=1

    shift
    shift
    call echo %%%argument%

con espansione ritardata:

@echo off
setlocal enableDelayedExpansion
set argument=1

    shift
    shift
    call echo %%!argument!

l'output sarà

3



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow