Batch file 替换for循环中的字符
是否有方法将Batch file 替换for循环中的字符,batch-file,Batch File,是否有方法将:search=replace-语法应用于批处理中for循环内的%%var 我试图用冒号替换机器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:-=:
:search=replace
-语法应用于批处理中for循环内的%%var
我试图用冒号替换机器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
的变化而变化
谢谢谢谢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:-=:!
)
欢迎来到这个世界。啊,太好了!谢谢@Stephan!!如果在
for
循环中没有其他内容,则甚至不需要延迟扩展。只需FOR/F“tokens=12 delims=“%%G IN('ipconfig/all^ | find/I“物理地址”)设置var=%%G
和wgethttps://api-server-uri/pxe/do-stuff?newmac=%var:-=:%
@Stephan,你的意思是把wget
放在循环之外,对吗?显然,这只能在循环只迭代一次的情况下完成…请尝试:FOR/F“tokens=12-17 delims=-“%%G in('ipconfig/all^ | find/I“Physical Address”)DO wgethttps://api-server-uri/pxe/do-stuff?newmac=%%G:%%H:%%I:%%J:%%K:%%L