标题: [文本处理] 求助批处理如何实现截取特定字符串 [打印本页]
作者: dmxiaoma 时间: 2017-6-22 16:10 标题: 求助批处理如何实现截取特定字符串
本帖最后由 pcl_test 于 2017-6-22 16:20 编辑
有两种情况:
{"192.168.1.109", "fe80::e896:88ef:3c9f:8152"} 44:39:C4:52:68:47
或
{"192.168.1.109"} 44:39:C4:52:68:47
不管哪种情况,求截取44:39:C4:52:68:47出来的代码。万分感谢
作者: zghwelcome 时间: 2017-6-22 17:01
- @echo off
- set str1={"192.168.1.109", "fe80::e896:88ef:3c9f:8152"} 44:39:C4:52:68:47
- set str2={"192.168.1.109"} 44:39:C4:52:68:47
- call :_GetMac "%str1%"
- call :_GetMac "%str2%"
- pause
- exit
-
- :_GetMac
- for /f "tokens=2 delims=}" %%a in ("%~1") do echo,%%a
- goto :EOF
-
- :EOF
复制代码
作者: cfwyy77_bat 时间: 2017-6-22 21:34
来个gawk 玩玩- echo {"192.168.1.109", "fe80::e896:88ef:3c9f:8152"} 44:39:C4:52:68:47 | gawk "{print $NF}"
- echo {"192.168.1.109"} 44:39:C4:52:68:47 | gawk "{print $NF}"
复制代码
作者: taofan712 时间: 2017-6-22 21:40
echo;%var:~-17%
作者: /zhqsystem/zhq 时间: 2017-6-23 00:32
- set "$="
- call:1 !$!
- echo,!$!
- pause&&exit
- :1
- set "$=%1"
- set "$=!$: =!"
- if /i "%2"=="" goto:eof
- shift
- goto:1
复制代码
作者: dmxiaoma 时间: 2017-6-23 00:47
感谢大家的热情帮助。
还有个问题请教:
如上截取出来的结果是 44:39:C4:52:68:47 我是放在变量mac里面的
比如我要显示出来就是echo, MAC地址^: %MAC%
我不想结果中有“:”号就改成 echo, MAC地址^: %MAC::=%
假如结果中有还有其它内容我也想替换掉
比如结果是 44:-39:-C4:-52:-68:-47
我要同时去掉:号和-号
echo, MAC地址^: %MAC::=% 要怎么改代码?
作者: dmxiaoma 时间: 2017-6-23 00:54
回复 3# cfwyy77_bat
我运行代码后提示:
'gawk' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
gawk是什么?是需要装什么程序吗?
新手小白,不好意思了。
作者: ShowCode 时间: 2017-6-23 09:30
回复 7# dmxiaoma
下载之后跟你的bat文件放在同一个目录
http://bbs.bathome.net/s/tool/index.html?key=gawk
作者: ShowCode 时间: 2017-6-23 09:58
回复 6# dmxiaoma
例子:- @echo off
- set str1=44:-39:-C4:-52:-68:-47
- set str2=%str1::=%
- echo %str2%
- set str3=%str2:-=%
- echo %str3%
- pause
复制代码
作者: cfwyy77_bat 时间: 2017-6-23 11:11
回复 7# dmxiaoma
gawk 是第三方的 文本处理工具。 原来在linux 很流行的,也有移植到windows的版本。你可以在坛子里找找相关资料,坛子里也有下载。这东东功能强大,比较复杂。
想学好用好 不是几天的事,我也是新手,刚学这个。
作者: dmxiaoma 时间: 2017-6-23 15:44
谢谢大家的热心帮助,辛苦了!
作者: happy886rr 时间: 2017-6-23 16:35
本帖最后由 happy886rr 于 2017-6-23 16:36 编辑
回复 11# dmxiaoma
常用符号通吃- @echo off
-
- for /f "tokens=1-6 delims=:-" %%a in ("44:-39:-C4:-52:-68:-47") do (
- echo %%a%%b%%c%%d%%e%%f
- )
-
- pause
复制代码
作者: 会飞的蜗牛丶 时间: 2017-6-28 12:02
本帖最后由 会飞的蜗牛丶 于 2017-6-28 12:03 编辑
- set "str={"192.168.1.109", "fe80::e896:88ef:3c9f:8152"} 44:39:C4:52:68:47"
- set "str1={"192.168.1.109"} 44:39:C4:52:68:47"
-
- echo %str:*} =%
- echo %str1:*} =%
复制代码
作者: dmxiaoma 时间: 2017-6-28 17:36
本帖最后由 dmxiaoma 于 2017-6-28 17:38 编辑
回复 13# 会飞的蜗牛丶
还可以这样哦,这方法真好,代码又简单
如果我要把:号也同时去掉是这样改么:
echo %str:*} :=%
echo %str1:*} :=%
作者: ShowCode 时间: 2017-6-28 19:59
回复 14# dmxiaoma
不是。
作者: paladinjin 时间: 2017-6-28 22:11
好长时间 没搞了 我只知道 用FOR可以解决
作者: 会飞的蜗牛丶 时间: 2017-6-30 10:36
回复 14# dmxiaoma
这样写- set "str={"192.168.1.109", "fe80::e896:88ef:3c9f:8152"} 44:39:C4:52:68:47"
- set "str1={"192.168.1.109"} 44:39:C4:52:68:47"
- set "str=%str::=%"
- set "str1=%str1::=%"
- echo %str:*} =%
- echo %str1:*} =%
复制代码
作者: dmxiaoma 时间: 2017-7-1 14:26
回复 17# 会飞的蜗牛丶
谢谢,学到知识了!
简洁、效率
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |