SHIFT: 更换批文件中可替换参数的位置。


 


... 命令"SHIFT"的示例
... "SHIFT" 摘自 Microsoft Windows 帮助
... 重要信息,"SHIFT"命令的提示

命令: "SHIFT" 开启 Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. 可用

命令"SHIFT"的示例

`SHIFT`Windows命令提示符中的命令用于移动批处理文件中参数的位置。以下是一些使用示例`SHIFT`-命令: 示例 1:迭代批处理文件中的参数:

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

说明:本示例使用循环来迭代批处理文件中的所有参数并一一显示它们。命令`SHIFT`用于移动参数的位置。 示例 2:对批处理文件中的参数求和:

@ECHO OFF
SET 全部的=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A 全部的+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO 全部的: %全部的%

说明:在此示例中,参数在循环中求和。命令`SHIFT`移动参数位置,并且`SET /A`用于更新总数。 示例 3:使用嵌套循环和 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

描述:这个例子展示了如何`SHIFT`可以在嵌套循环中使用。外循环处理外部参数,内循环处理内部参数。 示例 4:使用 SHIFT 跳过参数:

@ECHO OFF
SHIFT
SHIFT
ECHO 第三 Parameter: %1

说明:这里前两个参数与两个连续的参数一起使用`SHIFT`命令被跳过并显示第三个参数。 示例5:检查并处理参数:

@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
    ECHO Debug-模式已激活.
    SHIFT
    GOTO PARAM_LOOP
)
ECHO 过程 Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM

说明:此示例检查第一个参数是否为“/DEBUG”。如果是这种情况,则会发出一条消息并跳过该参数。 这`SHIFT`命令在需要处理可变数量参数的批处理脚本中特别有用。注意`SHIFT`移动参数列表的内容并重新分配参数位置。因此,重要的是`SHIFT`根据批处理脚本的逻辑明智地使用。

"SHIFT" 摘自 Microsoft Windows 帮助

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

C:\\WINDOWS>

更改批处理文件中可替换参数的位置。

SHIFT [/n]

如果命令扩展名被启用,SHIFT 命令支持/n 命令行开关;该命令行开关告诉
命令从第 n 个参数开始移位;n 介于零和八之间。例如:

    SHIFT /2

会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。

重要信息,"SHIFT"命令的提示

当使用`SHIFT`在批处理脚本中使用命令时,需要考虑一些重要方面: 1. 参数丢失:如果您`SHIFT`这会将参数列表中参数的位置向左移动。这意味着第一个参数的值(`%1`)由第二个参数(`%2`) 被替换,第二个参数变为第三个 (`%3`),等等。最后一个参数的值(`%9`)丢失了,并且值`%0`(脚本名称)保持不变。 2. 班次数量:可以`SHIFT`在批处理脚本中仅出现九次,因为只有九个数字参数(`%0`直到`%9`)给出。第九次移位后,第九个参数的值仍然丢失。 3. 循环中的 SHIFT:如果您`SHIFT`在循环中,您应该确保正确检查条件,以避免在没有其他参数的情况下无限循环。

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

4. 嵌套循环中的 SHIFT:如果您`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

5. 延迟扩展和转变:如果您`SHIFT`结合延迟扩展(`ENABLEDELAYEDEXPANSION`), 注意`!`不用于延迟扩展`%`

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO 数量 Parameter: %COUNT%

考虑顺序和频率很重要`SHIFT`仔细计划以确保参数按预期移动并且不会丢失任何信息。还检查空参数(`IF "%1"==""`)对于避免无限循环很重要。


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



指挥 SHIFT - 更换批文件中可替换参数的位置。

HTTP: ... console/cn/060.htm
0.093
16505
Bearbeiten Sie die *.qdr-Datei für einen benutzerdefinierten Start des Quad-Datei-Explorers!
Wie füge ich der i-net-Funktion im Datei-Explorer Google- oder Bing-Suche hinzu?
Questions and answers about hiding Windows desktop icons!
Kann ich verändern der Farbe in der Adressleiste des aktiven Fensters einstellen?
Gibt es einen Programmstarter im Datei Explorer Q-Dir!
Umgebungsfreigabe in Windows 11 mit Geräten in der Nähe!
Why is the mouse wheel too slow on Windows 11?
Ich denke, was noch fehlt, ist die Auswahl-umkehren Option?
Automatically log in excluding removing the pin on Windows 11?
Difference between laser and ink printers?



(0)