【发布时间】: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