2016-12-15 47 views
-1

我试图破译一个批处理文件,并有是我无法左右环绕我的头代码的某一部分:批处理文件subraction /替代

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:-=%" 

从我所收集,这是莫名其妙地剥out“ - ”格式,只留下XXXXXXXXXXXX格式的mac地址。

据我所知,在有一个替代算子,并根据设置的命令 - =应该是“减”变量,并且整件事在%%内我想我不会不理解这部分。它如何知道减去破折号?

还是我看着这完全错了?

+4

它不适用于减法运算,它是带有SET/A的算术运算符。现在做的是一个字符替换,即用**或** **字符替换** - **字符,这取决于哪个语句不是您的问题中的拼写错误。 – Compo

+2

'-'不是“减”,而是“搜索”字符串。完整格式为'%VARIABLE:search = replace%'。这里搜索'-',并用空字符串替换。 – TripeHound

回答

1

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

在你的情况下,它将用空字符串替换-