SHIFT: Muda a posição de parâmetros substituíveis em ficheiros batch.


 


... Os exemplos para o comando "SHIFT"
... "SHIFT" Trecho da Ajuda do Microsoft Windows
... Informações importantes, dicas para o comando "SHIFT"

O comando: "SHIFT" está ativado Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponível

Os exemplos para o comando "SHIFT"

O`SHIFT`O comando no prompt de comando do Windows é usado para mover a posição dos parâmetros em um arquivo em lote. Aqui estão alguns exemplos de uso do`SHIFT`-Comando: Exemplo 1: Iterar através de parâmetros em um arquivo em lote:

@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END

Descrição: Este exemplo usa um loop para iterar todos os parâmetros em um arquivo em lote e exibi-los um por um. O comando`SHIFT`é usado para mover a posição dos parâmetros. Exemplo 2: Somar parâmetros em um arquivo em lote:

@ECHO OFF
SET TOTAL=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A TOTAL+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO total: %TOTAL%

Descrição: Neste exemplo os parâmetros são somados em um loop. O comando`SHIFT`move a posição do parâmetro e`SET /A`é usado para atualizar o total. Exemplo 3: Trabalhando com loops aninhados 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

Descrição: Este exemplo mostra como`SHIFT`pode ser usado em loops aninhados. O loop externo processa os parâmetros externos enquanto o loop interno processa os parâmetros internos. Exemplo 4: Ignorando parâmetros com SHIFT:

@ECHO OFF
SHIFT
SHIFT
ECHO Terceiro Parameter: %1

Descrição: Aqui os dois primeiros parâmetros são usados ​​com dois`SHIFT`os comandos são ignorados e o terceiro parâmetro é exibido. Exemplo 5: verificar e tratar parâmetros:

@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
    ECHO Debug-Modo ativado.
    SHIFT
    GOTO PARAM_LOOP
)
ECHO Processo Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM

Descrição: Este exemplo verifica se o primeiro parâmetro é "/DEBUG". Se for esse o caso, uma mensagem será emitida e o parâmetro será ignorado. O`SHIFT`O comando é particularmente útil em scripts em lote onde um número variável de parâmetros precisa ser processado. Observe que`SHIFT`move o conteúdo da lista de parâmetros e reatribui as posições dos parâmetros. Portanto, é importante`SHIFT`Use com sabedoria e de acordo com a lógica do seu script em lote.

"SHIFT" Trecho da Ajuda do Microsoft Windows

Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.

C:\\Windows>

Altera a posição de parâmetros substituíveis num ficheiro batch.

SHIFT [/n]

Se as extensões de comandos estiverem activadas, o comando SHIFT suporta
o parâmetro /n que indica ao comando para deslocar a partir do
n-ésimo argumento, onde o n pode ser um valor entre zero e oito. Por exemplo:

SHIFT /2

deslocará %3 para %2, %4 para %3, etc. e não afecta o %0 e o %1.

Informações importantes, dicas para o comando "SHIFT"

Ao usar o`SHIFT`comando em scripts em lote, há alguns aspectos importantes a serem considerados: 1. Perda de parâmetro: Se você`SHIFT`isso move a posição dos parâmetros na lista de parâmetros para a esquerda. Isso significa que o valor do primeiro parâmetro (`%1`) pelo do segundo parâmetro (`%2`) é substituído, o segundo parâmetro se torna o terceiro (`%3`), e assim por diante. O valor do último parâmetro (`%9`) é perdido e o valor de`%0`(o nome do script) permanece inalterado. 2. Número de turnos: Você pode`SHIFT`apenas nove vezes em um script em lote porque existem apenas nove parâmetros numéricos (`%0`até`%9`) dá. Após a nona mudança, o valor do nono parâmetro permanece perdido. 3. SHIFT em loops: Se você`SHIFT`em um loop, você deve garantir que as condições sejam verificadas corretamente para evitar um loop infinito se não houver outros parâmetros.

@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP

4. SHIFT em loops aninhados: Se você`SHIFT`em loops aninhados, observe que mover os parâmetros em um loop também afeta as posições dos parâmetros nos loops aninhados.

@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. Expansão e SHIFT atrasadas: Se você`SHIFT`em combinação com expansão retardada (`ENABLEDELAYEDEXPANSION`), Observe que`!`não é usado para expansão atrasada`%`.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO número de Parameter: %COUNT%

É importante considerar a ordem e a frequência das`SHIFT`planeje cuidadosamente para garantir que os parâmetros sejam movidos conforme o esperado e nenhuma informação seja perdida. Também verificando parâmetros vazios (`IF "%1"==""`) é importante para evitar loops infinitos.


Deutsch
English
Español
Français
Italiano
日本語 (Nihongo)
한국어 (Hangugeo)
汉语 (Hànyǔ)
Türkçe
Português
Português
Svenska
Norsk
Dansk
Suomi
Nederlands
Polski









Windows-10


... Windows 10 FAQ
... Windows 10 How To


Windows 10 How To


... Windows 11 How To
... Windows 10 FAQ



Prompt SHIFT - Muda a posição de parâmetros substituíveis em ficheiros batch.

HTTP: ... console/pt/060.htm
0.093
17666
How can I contact Facebook.com by telephone, where can the telephone contact be found?
Is there a difference between file management and folder administration?
Mount ISO on any MS Windows OS?
The stop-clock does not display hours?
Eigenes Bild als Desktophintergrund in Windows 8.1 und Acht verwenden (ändern, einsetzen)!
Troubleshoot, repair or recovery Windows 8 and 8.1 with Windows 8 (8.1) Installations DVD!
In which programming language is the freeware written?
How to find the Windows Experience Index in Windows 8.1, 10  on my PC (computer rating, performance)?
Windows 8.1 und 10 cmd.exe / Eingabeaufforderung im administrativen Modus starten?
Google Chrome im Metro Modus starten bei Windows 8.1/8!



(0)