批处理如何提取文件中指定内容?

通过批处理echo offif exist B.txt del B.txtipconfig /all >A.txtfind "物理地址" A.txt >B.txt生成A.txt和B.txt2个文件,现在想提取B.txt中的第二行指定位置的字符,如图1请问命令该怎么写?
是取这个位置的字符串,不是提取图中的具体的字符。这个位置的字符是随机的

只取第二行的那两个字符串对吗?


@echo off

for /f "tokens=5,6 delims=-" %%a in ('ipconfig /all ^| findstr "物理地址"') do (
    echo %%~a %%~b
    pause
    exit
)

追问

是取这个位置的字符串,不是提取图中的具体的字符。这个位置的字符是随机的

追答

我知道是取这个位置的字符串。上面的代码就是。

如果说该位置的MAC地址长度如果和下面几个长的一样,那么上面的代码就不行了。如果基本都是6位的,那么就可以。

追问

好的

麻烦再帮看一下如何把图中和你给的这两段代码结合起来,想实现的目的是手动输入字符,然后提取上文中指定位置的字符,生成新的字符。例如手动输入ABC,自动提取F6B3,生成ABC-F6B3

追答

@echo off & title 自定义修改计算机名 By 依梦琴瑶

for /f "tokens=5,6 delims=-" %%a in ('ipconfig /all ^| findstr "物理地址"') do (
set m=%%~a%%~b
goto main
)
:main
cls & set "k="
set /p k=请输入部门缩写拼音(完毕后回车):

echo,
if not defined k (
echo 请设置后再回车,按任意键重新输入
pause>nul
goto main
)

echo 原计算机名为:%computername%
echo 新计算机名为:%k%-%m%

wmic computersystem where "name='%computername%'" call rename "%k%-%m%" >nul 2>nul

:sle
echo 请确认计算机名是否修改正确,正确请按[Y]重启计算机,错误请按[N]修改计算机名。
set /p a=请选择[Y,N]:

if /i "%a%"=="Y" goto B
if /i "%a%"=="N" goto main

goto sle

:B
shutdown -r -t 0

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答