2016-12-15 82 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%。搜索=之前的值並將其替換爲=之後的值。

在你的情況下,它將用空字符串替換-