2016-12-15 5 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をgetmacコマンドの各行である%aに設定します。

getmacコマンドを実行するとmacアドレス以外の値が返されるため、2行目は同じ処理を実行するように見えますが、今回は行の最初の部分(MACアドレスXX-XX-XX-XX-XX-XX」の形式で。

最後の部分は、私はトラブルの理解を抱えている部分である。それは私が集まるところでは

set "macaddr1=%macaddr1:-=%" 

を言い、これは何とかストリッピングされますフォーマットから " - "を取り出し、XXXXXXXXXXXX形式でMACアドレスを残してください。

私が理解する限り:置換演算子があり、setコマンドに従って - =は "減算"変数とみなされ、全体が内部にあります%%

私はそうは思いませんこの部分を理解していない。どのようにダッシュを引くことを知っていますか?

これは完全に間違っていますか?

+4

これは、減算ではなく、SET/Aを使用した算術演算子です。何がしているのかは、文字置換、つまり、** - **文字を何も置き換えないか、または** $ **文字に置き換えます。これは、どのステートメントがあなたの質問のタイプミスではないかに依存します。 – Compo

+2

'-'は「減算」ではなく「検索」文字列です。フルフォーマットは '%VARIABLE:search = replace%'です。ここで '-'が検索され、空の文字列に置き換えられます。 – TripeHound

答えて

1

あなたのプログラムが行っていることは、の文字列置換のバッチ構文です。構文は%VARIABLE:search=replace%です。 =の前の値が検索され、=の後の値に置き換えられます。

あなたの場合は、-を空の文字列に置き換えています。

関連する問題