Il comando: "SHIFT" è attivo Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponibile
Gli esempi per il comando "SHIFT"
IL
`SHIFT`Il comando nel prompt dei comandi di Windows viene utilizzato per spostare la posizione dei parametri in un file batch. Ecco alcuni esempi di utilizzo di
`SHIFT`-Comando:
Esempio 1: scorrere i parametri in un file batch:
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
Descrizione: Questo esempio utilizza un ciclo per scorrere tutti i parametri in un file batch e visualizzarli uno per uno. Il comando
`SHIFT`viene utilizzato per spostare la posizione dei parametri.
Esempio 2: somma dei parametri in un file batch:
@ECHO OFF
SET TOTALE=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A TOTALE+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO totale: %TOTALE%
Descrizione: In questo esempio i parametri vengono sommati in un ciclo. Il comando
`SHIFT`sposta la posizione del parametro e
`SET /A`viene utilizzato per aggiornare il totale.
Esempio 3: lavorare con cicli nidificati e SHIFT:
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
Descrizione: Questo esempio mostra come
`SHIFT`può essere utilizzato in cicli nidificati. Il ciclo esterno elabora i parametri esterni mentre il ciclo interno elabora i parametri interni.
Esempio 4: Saltare i parametri con SHIFT:
@ECHO OFF
SHIFT
SHIFT
ECHO Terzo Parameter: %1
Descrizione: Qui i primi due parametri vengono utilizzati con due consecutivi
`SHIFT`i comandi vengono saltati e viene visualizzato il terzo parametro.
Esempio 5: controllo e gestione dei parametri:
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-Modalità attivata.
SHIFT
GOTO PARAM_LOOP
)
ECHO Processi Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
Descrizione: Questo esempio controlla se il primo parametro è
"/DEBUG". In tal caso viene emesso un messaggio e il parametro viene saltato.
IL
`SHIFT`Il comando è particolarmente utile negli script batch in cui è necessario elaborare un numero variabile di parametri. Notare che
`SHIFT`sposta il contenuto dell'elenco dei parametri e riassegna le posizioni dei parametri. Pertanto, è importante
`SHIFT`Utilizzalo con saggezza e secondo la logica del tuo script batch.
"SHIFT" Estratto dalla guida di Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Cambia la posizione dei parametri sostituibili in un file batch.
SHIFT [/n]
Se le estensioni ai comandi sono abilitate, il comando SHIFT supporta
l'opzione /n che comunica al comando di iniziare l'azione di shif
all'argomento "alla n", dove n può essere tra zero e otto. Per
esempio:
SHIFT /2
esegue lo shift di %3 a %2, %4 a %3, ecc., lasciando %0 e %1 invariati.
Informazioni importanti, suggerimenti per il comando "SHIFT"
Quando si utilizza il
`SHIFT`comando negli script batch, ci sono alcuni aspetti importanti da considerare:
1.
Perdita di parametri: Se tu
`SHIFT`questo sposta la posizione dei parametri nell'elenco dei parametri a sinistra. Ciò significa che il valore del primo parametro (
`%1`) da quello del secondo parametro (
`%2`) viene sostituito, il secondo parametro diventa il terzo (
`%3`), e così via. Il valore dell'ultimo parametro (
`%9`) viene perso e il valore di
`%0`(il nome dello script) rimane invariato.
2.
Numero di turni: Puoi
`SHIFT`solo nove volte in uno script batch perché ci sono solo nove parametri numerici (
`%0`Fino a
`%9`) dà. Dopo il nono spostamento il valore del nono parametro resta perso.
3.
SHIFT in loop: Se tu
`SHIFT`in un ciclo, è necessario assicurarsi che le condizioni siano controllate correttamente per evitare un ciclo infinito se non sono presenti altri parametri.
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
SHIFT nei cicli nidificati: Se tu
`SHIFT`nei cicli nidificati, tieni presente che lo spostamento dei parametri in un ciclo influisce anche sulle posizioni dei parametri nei cicli nidificati.
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
5.
Espansione ritardata e SHIFT: Se tu
`SHIFT`in combinazione con espansione ritardata (
`ENABLEDELAYEDEXPANSION`), notare che
`!`non viene utilizzato per l'espansione ritardata
`%`.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO numero di Parameter: %COUNT%
È importante considerare l'ordine e la frequenza di
`SHIFT`pianificare attentamente per garantire che i parametri vengano spostati come previsto e che nessuna informazione venga persa. Controllando anche i parametri vuoti (
`IF "%1"==""`) è importante per evitare cicli infiniti.