我试图破译一个批处理文件,而且有一部分代码我无法解决问题:
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命令 - =应该"减去"变量,整个事情都在%%
之内我想我不明白这一部分。怎么知道减去破折号?
或者我是否完全错误地看待这个?
答案 0 :(得分:1)
您的程序正在做的不是减去,这是字符串替换的批处理语法。语法为%VARIABLE:search=replace%
。搜索=
之前的值,并替换为=
之后的值。
在您的情况下,它正在用空字符串替换-
。