Komut: "SHIFT" açık Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. mevcut
Komut örnekleri "SHIFT"
Der
`SHIFT`Windows Komut İstemi'ndeki komut, bir toplu iş dosyasındaki parametrelerin konumunu taşımak için kullanılır. İşte kullanımına ilişkin bazı örnekler
`SHIFT`-Emretmek:
Örnek 1: Bir toplu iş dosyasındaki parametreleri yineleyin:
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
Açıklama: Bu örnek, bir toplu iş dosyasındaki tüm parametreleri yinelemek ve bunları birer birer görüntülemek için bir döngü kullanır. Komuta
`SHIFT`Parametrelerin konumunu taşımak için kullanılır.
Örnek 2: Bir toplu iş dosyasındaki parametrelerin toplamı:
@ECHO OFF
SET TOPLAM=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A TOPLAM+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO Toplam: %TOPLAM%
Açıklama: Bu örnekte parametreler bir döngüde toplanmıştır. Komuta
`SHIFT`parametre konumunu taşır ve
`SET /A`Toplamı güncellemek için kullanılır.
Örnek 3: İç içe döngüler ve SHIFT ile çalışma:
@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
Açıklama: Bu örnekte nasıl
`SHIFT`iç içe döngülerde kullanılabilir. Dış döngü dış parametreleri işlerken iç döngü iç parametreleri işler.
Örnek 4: SHIFT ile parametrelerin atlanması:
@ECHO OFF
SHIFT
SHIFT
ECHO Üçüncü Parameter: %1
Açıklama: Burada ilk iki parametre ardışık iki parametreyle kullanılmıştır.
`SHIFT`komutlar atlanır ve üçüncü parametre görüntülenir.
Örnek 5: Parametreleri kontrol edin ve yönetin:
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-Mod etkinleştirildi.
SHIFT
GOTO PARAM_LOOP
)
ECHO İşlem Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
Açıklama: Bu örnek, ilk parametrenin
"/DEBUG" olup olmadığını kontrol eder. Böyle bir durumda bir mesaj verilir ve parametre atlanır.
Der
`SHIFT`komutu, değişken sayıda parametrenin işlenmesi gereken toplu komut dosyalarında özellikle kullanışlıdır. Dikkat
`SHIFT`parametre listesinin içeriğini taşır ve parametre konumlarını yeniden atar. Bu nedenle önemlidir
`SHIFT`Akıllıca ve toplu komut dosyanızın mantığına göre kullanın.
"SHIFT" Microsoft Windows Yardımından Alıntı
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Bir toplu is dosyasindaki degisen parametre konumlarini
degistirir.
SHIFT [/n]
Komut Uzantilari etkinse, SHIFT komutu, /n anahtarini destekler.
Bu anahtar,
komuta n. yordamda degistirmeye baslamasini bildirir; bu durumda
n,
sifir ile sekiz olabilir. Örnegin:
SHIFT /2
%3 ögesini %2 ögesine, %4 ögesini %3 ögesine vb. degistirip
%0 ile %1 ögelerine etkilenmeden birakabilir.
Önemli bilgiler, "SHIFT" komutu için ipuçları
Kullanırken
`SHIFT`Toplu komut dosyalarındaki komutta dikkate alınması gereken bazı önemli hususlar vardır:
1.
Parametre kaybı: `SHIFT`bu, parametre listesindeki parametrelerin konumunu sola taşır. Bu, ilk parametrenin değerinin (
`%1`) ikinci parametreninkiyle (
`%2`) değiştirilirse, ikinci parametre üçüncü (
`%3`) ve benzeri. Son parametrenin değeri (
`%9`) kaybolur ve değeri
`%0`(komut dosyası adı) değişmeden kalır.
2.
Vardiya sayısı: Yapabilirsiniz
`SHIFT`toplu komut dosyasında yalnızca dokuz kez çünkü yalnızca dokuz sayısal parametre vardır (
`%0`değin
`%9`) verir. Dokuzuncu vardiyadan sonra dokuzuncu parametrenin değeri kayıp kalır.
3.
Döngülerde SHIFT:`SHIFT`Bir döngüde, eğer başka parametre yoksa sonsuz bir döngüden kaçınmak için koşulların doğru şekilde kontrol edildiğinden emin olmalısınız.
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
İç içe döngülerde SHIFT:`SHIFT`iç içe döngülerde, bir döngüdeki parametrelerin taşınmasının aynı zamanda iç içe döngülerdeki parametre konumlarını da etkileyeceğini unutmayın.
@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.
Gecikmeli Genişletme ve SHIFT :`SHIFT`gecikmeli genişleme ile birlikte (
`ENABLEDELAYEDEXPANSION`), dikkat
`!`gecikmeli genişleme için kullanılmaz
`%`.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO sayısı Parameter: %COUNT%
Sırasını ve sıklığını dikkate almak önemlidir.
`SHIFT`Parametrelerin beklendiği gibi taşınmasını ve hiçbir bilginin kaybolmamasını sağlamak için dikkatli bir şekilde plan yapın. Ayrıca boş parametrelerin kontrol edilmesi (
`IF "%1"==""`) sonsuz döngülerden kaçınmak önemlidir.