【问题标题】:Batch file subraction/substitution批处理文件减法/替换
【发布时间】:2016-12-15 16:24:12
【问题描述】:

我正在尝试破译一个批处理文件,但我无法理解代码的某些部分:

for /f "tokens=*" %%A in ('getmac') do set "macaddr1=%%A"
echo %macaddr1
for /f "tokens=1" %%A in ("%macaddr1%") do set "macaddr1=%%A"
set "macaddr1=%macaddr1:-=%"

据我所知,这段代码正在运行“getmac”命令,然后遍历并设置每一行并将变量 v 设置为等于 %a,即 getmac 命令的每一行。

由于运行 getmac 命令返回的不仅仅是 mac 地址,第二行似乎正在通过并告诉它做同样的事情,但这次只分配该行的第一部分(即XX-XX-XX-XX-XX-XX" 格式。

最后一部分是我无法理解的部分。它说

set "macaddr1=%macaddr1:-=%"

据我所知,这以某种方式从格式中删除了“ - ”,只是将 mac 地址保留为 XXXXXXXXXXXX 格式。

据我了解, : 中有一个替换运算符,根据设置命令 -= 应该是“减去”变量,整个东西在里面 % %

我想我不明白这部分。它怎么知道减去破折号?

还是我完全看错了?

【问题讨论】:

  • 它不是用于减法的,它是一个带有 SET /A 的算术运算符。正在做的是字符替换,即用任何内容替换 - 字符或 $ 字符,具体取决于哪个语句不是您问题中的拼写错误。跨度>
  • - 不是“减法”而是“搜索”字符串。完整格式为%VARIABLE:search=replace%。这里-被搜索,并被一个空字符串替换。

标签: shell batch-file command-line cmd


【解决方案1】:

您的程序所做的不是减法,而是 字符串替换 的批处理语法。语法为%VARIABLE:search=replace%。搜索=之前的值并替换为=之后的值。

在您的情况下,它将- 替换为空字符串。

【讨论】:

    猜你喜欢
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    相关资源
    最近更新 更多