插入Hyphon每两个字符批处理

时间:2014-11-03 12:58:38

标签: batch-file for-loop command-line windows-7 command-prompt

我正在某些机器上使用局域网唤醒应用程序,我正在创建一个脚本来在实验室中对其进行测试。

不幸的是,应用程序只读取没有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.
        )
    )
)

我到处搜索过,只发现如何在字符串末尾或单词中添加或删除字符。

提前致谢!

1 个答案:

答案 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