2017-03-15 102 views
0

有沒有辦法在批處理for循環中應用:search=replace -syntax到%%var替換For循環中的char

我試圖用一個機器的mac地址內的冒號替換所有的連字符(然後使用它們)。不幸的是,我的常規方法set var=%var:-=:%不適用於for循環。

FOR /F "tokens=12 delims= " %%G IN ('ipconfig /all ^| find /I "Physical Address"') DO (
     SET var=%%G 
     SET newmac=%var:-=:% 
     wget https://api-server-uri/pxe/do-stuff?newmac=%newmac% 
    ) 

的問題是,%var:-=:%值不隨%%G改變。

由於

+7

歡迎[延遲膨脹(http://stackoverflow.com/a/30284028/2152082)的世界。 – Stephan

+0

啊,完美!謝謝@Stephan! –

回答

0

由於Stephans評論:

Setlocal enabledelayedexpansion 
    FOR /F "tokens=12 delims= " %%G IN ('ipconfig /all ^| find /I "Physical Address"') DO (
     SET var=%%G 
     wget https://api-server-uri/pxe/do-stuff?newmac=!var:-=:! 
    ) 
+0

如果你的'for'循環裏沒有別的東西,你甚至不需要延遲擴展。 'FOR/F'tokens = 12 delims =「%% G IN('ipconfig/all^| find/I」Physical Address「')DO SET var = %% G' and'wget https:// api-server -uri/pxe/do-stuff?newmac =%var: - =:%' – Stephan

+0

@Stephan,你的意思是把'wget'放在循環之外,對嗎?顯然,這隻能在循環迭代一次的情況下才能完成...... – aschipfl

+0

嘗試:'FOR/F「標記= 12-17 delims = - 」%% G IN('ipconfig/all^| find/I「Physical地址「')DO wget https:// api-server-uri/pxe/do-stuff?newmac = %% G:%% H:%% I:%% J:%% K:%% L' – Aacini