我正在某些机器上使用局域网唤醒应用程序,我正在创建一个脚本来在实验室中对其进行测试。
不幸的是,应用程序只读取没有hyphon的MAC地址(来自.csv文件),并且为了检查机器是否已“被唤醒”,需要对机器进行ping操作。我找到了一种使用ARP的方法,但是,MAC地址需要让其中的hyphon可以在ARP表中找到。
基本上,我需要能够在MAC地址中每两个字符(最好是在脚本中)插入一个hyphon,因此,转换将如下:
XXXXXXXXXXXX - > XX-XX-XX-XX-XX-XX
该脚本显示:
for /f %%a in (macaddresses.csv) do (
start "" wol.exe %%a
:: CONVERSION HERE
for /f "tokens=1,2,3 delims= " %%i in ('arp -a ^| find /i "%%a"') do (
ping %%i
if %errorlevel% EQU 0 (
echo MAC address %%a woken up.
set /a i+=1
) else (
echo MAC address %%a not woken up.
)
)
)
我到处搜索过,只发现如何在字符串末尾或单词中添加或删除字符。
提前致谢!
答案 0 :(得分:2)
通过逐步删除字符来管理我想要的东西:
setlocal enableextensions enabledelayedexpansion
for /f %%a in (macaddresses.csv) do (
start "" wol.exe %%a
set mac=%%a
set mac=!mac:~0,-10!-!mac:~2,-8!-!mac:~4,-6!-!mac:~6,-4!-!mac:~8,-2!-!mac:~10!
for /f "tokens=1,2,3 delims= " %%i in ('arp -a ^| find /i "!mac!"') do (
ping %%i
if %errorlevel% EQU 0 (
echo MAC address !mac! woken up.
set /a i+=1
) else (
echo MAC address !mac! not woken up.
)
)
)
endlocal