批处理文件的子代码/替换

时间:2016-12-15 16:24:12

标签: shell batch-file command-line cmd

我试图破译一个批处理文件,而且有一部分代码我无法解决问题:

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地址,第二行似乎正在通过并告诉它做同样的事情,但这次只分配行的第一部分(这是mac地址) XX-XX-XX-XX-XX-XX"格式。

最后一部分是我理解困难的部分。它说

set "macaddr1=%macaddr1:-=%"

从我收集的内容来看,这是以某种方式剥离出来的。 - "从格式中,只留下XXXXXXXXXXXX格式的mac地址。

据我了解,:有一个替换运算符,并且根据set命令 - =应该"减去"变量,整个事情都在%%

之内

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

或者我是否完全错误地看待这个?

1 个答案:

答案 0 :(得分:1)

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

在您的情况下,它正在用空字符串替换-