迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

批处理文件中 % 和 %% 之间的区别

作者:迹忆客 最近更新:2023/08/14 浏览次数:

在批处理文件中使用时,批处理程序员经常会混淆单百分号 (%) 和双百分号 (%%)。 在命令行上执行时,FOR 命令使用 %f,而在批处理文件中,它使用 %%f 而不是单个百分号。

符号 %%%%variable%!variable! 有一些基本差异,并且在命令行和批处理文件中使用不同。

本文介绍了批处理文件中 %%% 之间的区别。 它还讨论了批处理文件和 cmd 中 %%% 的使用,以及环境变量和循环变量。


在 CMD 中使用 % 和 %%

在命令行 shell 中,%变量指定单个字母的可替换参数。 Ms-DOS 使用 %1,%2,...,%9 作为可替换的命令行参数,即 %1 将被传递到批处理文件的第一个参数替换。

以下示例显示带有变量 (%a) 的单个百分号充当空字符:

set a="Hello World"
echo %a

在 CMD 中使用 %

当变量两边都使用百分号时,即%VARIABLE%,它充当环境变量,并在与 echo 命令一起使用时显示设置值。 %VARIABLE% 可以使用 set 命令进行设置并使用 echo 命令进行访问。

示例如下所示。

set a="Hello World"
echo %a%

输出 - 在 CMD 中使用 %


在批处理文件中使用 % 和 %%

在批处理文件中,命令行 shell 从左到右读取所有命令。 如果它读取百分号,则会继续检查下一个字符。

它将 %% 读取为单个 %,即将 %% 替换为单个百分比并读取第三个字符。 如果它在 FOR 循环中,它将像在 FOR 循环中一样对其进行计算。

以下示例解释了 FOR 循环中 %% 的使用。

FOR /L %%3 in (1,1,3) Do Echo %%3
PAUSE

在 for 循环中使用 %%

输出:

输出 - 在 for 循环中使用 %%

如果不是 FOR 循环,它将作为普通字符读取,并在命令行 shell 中直接执行时与 %variable 命令运行相同。

set a="Hello World"
echo %%a
PAUSE

使用 %% 作为普通字符

输出:

输出 - 使用 %% 作为普通字符

如果%号后面的字符是数字,它将被读取为命令行参数。 如果%后面的字符既不是%符号也不是数字,那么它将被读取为变量,直到下一个%符号; 然后,它将显示其值。

例如,

set a="Hello World"
echo %a%
PAUSE

使用%符号表示变量

输出:

输出 - 对变量使用 % 符号

要在批处理文件中使用纯 % 符号(例如 50%),您需要使用 %% 而不是单个 % 符号。

set a="The battery is charged 50%%"
echo %a%
PAUSE

读取字符串中的 % 符号

输出:

输出 - 读取字符串中的 % 符号

%%% 主要用在 FOR 命令中。 当在批处理文件外部使用 FOR 命令时,单个 % 符号效果很好。

但是,在批处理文件中使用时,应将其替换为双 %% 以避免任何错误。 另外,建议避免使用带有 % 符号的数字作为 FOR 命令参数。


在批处理文件中使用延迟扩展

有时,在批处理文件中使用 %VARIABLE% 不会打印结果。 这是因为当完成百分比扩展时,变量在执行之前(即解析时)被扩展。

在循环中使用时,变量仅扩展一次。

为了解决这个问题,您可以使用延迟扩展,即用感叹号 (!variable!) 代替百分号 (%variable%)。 当启用延迟扩展时,变量将在执行时扩展。

在循环中,每次迭代时都会扩展它。 因此,使用 ! 扩展变量 建议使用 % 代替,主要是在使用循环时。

要启用延迟扩展,我们可以使用 SETLOCAL EnableDelayedExpansion 命令并将 % 替换为 !,如下例所示。

@echo off
setlocal EnableDelayedExpansion
:: count to 5, storing results in a variable
set n=0
FOR /l %%G in (1,1,5) Do (echo [!n!] & set /a n+=1)
echo Total = %n%

使用延迟扩展

输出:

输出-延迟扩展的使用

因此,我们讨论了 %%% 符号在批处理文件和 cmd 中使用时的区别。 我们几乎涵盖了所有内容,包括延迟扩展的使用。

上一篇:使用批处理脚本移动文件

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用批处理脚本移动文件

发布时间:2023/08/16 浏览次数:164 分类:操作系统

本文将介绍如何使用批处理脚本移动文件。使用批处理脚本移动文件 我们可以通过将文件从源拖放到目标位置来将文件从一个目的地移动到另一个目的地。

批处理脚本中的错误处理

发布时间:2023/08/16 浏览次数:68 分类:操作系统

本文将展示如何创建批处理脚本来处理错误和失败。 此外,我们还将提供一些使该主题变得更容易的示例。批处理脚本中的错误处理

使用批处理脚本更改 CMD 文本颜色

发布时间:2023/08/15 浏览次数:157 分类:操作系统

本文将首先讨论批处理脚本或批处理文件的基本概念。 介绍完Batch脚本后,我们来讨论一下使用Batch脚本每秒改变CMD的文本颜色的方法。批处理脚本或文件

使用批处理脚本从命令提示符运行 .exe 文件

发布时间:2023/08/15 浏览次数:178 分类:操作系统

本文将展示如何使用批处理 (.bat) 脚本运行 .exe 类型的文件。您可以使用两个不同的命令来实现此目的。 让我们在以下部分中讨论每种方法。使用批处理脚本使用标题和位置从命令提示符运行

使用批处理脚本删除文件

发布时间:2023/08/15 浏览次数:124 分类:操作系统

本文将演示如何使用批处理脚本删除文件。使用批处理脚本删除文件 一般来说,我们可以通过点击删除或者按键盘上的删除按钮来轻松删除文件。

使用批处理脚本连接多个文件

发布时间:2023/08/15 浏览次数:83 分类:操作系统

在本文中,我们将了解如何将多个文件连接成一个文件。使用批处理脚本连接多个文件 我们将使用的命令的一般格式如下所示。

在批处理脚本中运行多个文件

发布时间:2023/08/15 浏览次数:58 分类:操作系统

本文将展示如何从单个批处理脚本运行多个文件。 此外,我们将提供一些示例和解释,以使该主题更容易。在批处理脚本中运行多个文件 为此,我们将使用名为 CALL 的内置命令。

使用批处理脚本将文件传输到 Raspberry Pi

发布时间:2023/08/14 浏览次数:122 分类:操作系统

本文将展示一个批处理命令,该命令将文件从 Windows 传输到 Raspberry Pi 环境并执行该文件。PuTTY 是一款第三方免费工具,可以免费实现 Windows 和 Unix 平台的 Telnet 和 SSH。 它还具有 xterm 终端仿真

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便