Shell 批处理文件引用/替换
我试图破译一个批处理文件,但代码中有一部分我很难理解:Shell 批处理文件引用/替换,shell,batch-file,command-line,cmd,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,这是get
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-XX”格式的mac地址)
最后一部分是我难以理解的部分,它说
set "macaddr1=%macaddr1:-=%"
据我所知,这是某种程度上从格式中去掉“-”,只是将mac地址保留为XXXXXXXXXX格式
据我所知:中有一个替换运算符,根据set命令-=应该是“Subtract”变量,整个过程在%%内
我想我不明白这部分。它怎么知道减去破折号呢
还是我完全错了?您的程序所做的不是减法,这是字符串替换的批处理语法。语法是
%VARIABLE:search=replace%
。搜索=
之前的值,并替换为=
之后的值
在您的例子中,它将用空字符串替换
-
。它不是用于减法运算,减法运算是一种带有SET/A的算术运算符。它所做的是字符替换,即将-字符替换为零,或将$字符,这取决于您的问题中哪个语句不是打字错误。-
不是“减法”但是“search”字符串。完整格式为%变量:search=replace%
。此处搜索-
,并替换为空字符串。