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


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

命令: "SHIFT" 开启 Windows 11, 10, .. 可用

"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`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"命令的提示

当使用`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.125
16505

What is Windows Hello?

Why for Windows, this simple digital clock on the desktop?

Difference Between Windows and Windows Server?

In neuem Prozess öffnen Kontextmenü, Menüpunkt entfernt?

Bei bestimmten Dateien Zeitstempel ändern!

Quad Explorer multiple settings for Windows 11, 10, 8.1, ...!



(0)