批处理文件从文本中读取特定字符串

时间:2015-04-16 10:24:02

标签: batch-file

我需要一些帮助来调整简单的文字。

我已经从命令getmac生成了一个文件。

该文件如下所示:

1
2 F0-79-59-62-20-EB   \Device\Tcpip_{F4744941-2A87-4DFA-A61B-393B8830B0C3}  
3 

我的目标是达到这一点:

1 F0-79-59-62-20-EB
2    
3   

即。删除MAC后的每个字符串并将其移动到第一行 或者只是阅读mac并将其插入变量而不进行任何编辑

由于 最好的祝福, 麦克

C:\Users\Test\Desktop>SETLOCAL EnableDelayedExpansion

C:\Users\Test\Desktop>FOR /F "tokens=*" %a IN (c:\mymac.txt) DO (
SET line=%a
IF "!line:~0,2!" == "2 " SET macline=%a
)

C:\Users\Test\Desktop>(
SET line=F0-79-59-62-20-EB   \Device\Tcpip_{F4744941-2A87-4DFA-A61B-                 
}
IF "!line:~0,2!" == "2 " SET macline=F0-79-59-62-20-EB        \Device\Tcpip_{F474494
1-2A87-4DFA-A61B-393B8830B0C3}
)

C:\Users\Test\Desktop>FOR /F "tokens=2 delims= " %m IN ("") DO (
SET mac=%m
ECHO
)

C:\Users\Test\Desktop>pause
Press any key to continue . . .

2 个答案:

答案 0 :(得分:0)

如果我理解正确的问题,这应该有效:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR /F "tokens=*" %%a IN (input.txt) DO (
    SET line=%%a
    IF "!line:~0,2!"=="2 " SET macline=%%a
)
FOR /F "tokens=2 delims= " %%m IN ("!macline!") DO (
    SET mac=%%m
)

此时mac存储在%mac%变量中。如果要将其输出到文件中,请将其附加到代码中:

ECHO 1 %mac% > output.txt
ECHO. >> output.txt
ECHO 2 >> output.txt
ECHO 3 >> output.txt

如果您想重复使用该mac,则会将其存储在%mac%

答案 1 :(得分:0)

生成的文件的格式似乎与getmac命令的输出完全不同 - 至少,它在我的机器上。

您应该可以使用(从提示符开始 - 但SO上的大多数响应都是批处理文件)

FOR /F %a IN ('getmac') DO SET mac=%a

echo %mac%
相关问题