找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 83309|回复: 17

[文本处理] 求助批处理如何实现截取特定字符串

[复制链接]
发表于 2017-6-22 16:10:05 | 显示全部楼层 |阅读模式
本帖最后由 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出来的代码。万分感谢
发表于 2017-6-22 17:01:41 | 显示全部楼层
  1. @echo off
  2. set str1={"192.168.1.109", "fe80::e896:88ef:3c9f:8152"}  44:39:C4:52:68:47
  3. set str2={"192.168.1.109"}  44:39:C4:52:68:47
  4. call :_GetMac "%str1%"
  5. call :_GetMac "%str2%"
  6. pause
  7. exit

  8. :_GetMac
  9. for /f "tokens=2 delims=}" %%a in ("%~1") do echo,%%a
  10. goto :EOF

  11. :EOF
复制代码
发表于 2017-6-22 21:34:23 | 显示全部楼层
来个gawk 玩玩
  1. echo {"192.168.1.109", "fe80::e896:88ef:3c9f:8152"}  44:39:C4:52:68:47 | gawk "{print $NF}"
  2. echo {"192.168.1.109"}  44:39:C4:52:68:47 | gawk "{print $NF}"
复制代码
发表于 2017-6-22 21:40:08 | 显示全部楼层
echo;%var:~-17%
发表于 2017-6-23 00:32:34 | 显示全部楼层
  1. set "$="
  2. call:1 !$!
  3. echo,!$!
  4. pause&&exit
  5. :1
  6. set "$=%1"
  7. set "$=!$: =!"
  8. if /i "%2"=="" goto:eof
  9. shift
  10. goto:1
复制代码
 楼主| 发表于 2017-6-23 00:47:21 | 显示全部楼层
感谢大家的热情帮助。
还有个问题请教:
如上截取出来的结果是  44:39:C4:52:68:47 我是放在变量mac里面的
比如我要显示出来就是echo, MAC地址^: %MAC%
我不想结果中有“:”号就改成 echo, MAC地址^: %MAC::=%
假如结果中有还有其它内容我也想替换掉
比如结果是 44:-39:-C4:-52:-68:-47
我要同时去掉:号和-号
echo, MAC地址^: %MAC::=%   要怎么改代码?
 楼主| 发表于 2017-6-23 00:54:27 | 显示全部楼层
回复 3# cfwyy77_bat
我运行代码后提示:
'gawk' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

gawk是什么?是需要装什么程序吗?
新手小白,不好意思了。
发表于 2017-6-23 09:30:55 | 显示全部楼层
回复 7# dmxiaoma


下载之后跟你的bat文件放在同一个目录
http://bbs.bathome.net/s/tool/index.html?key=gawk
发表于 2017-6-23 09:58:28 | 显示全部楼层
回复 6# dmxiaoma


例子:
  1. @echo off
  2. set str1=44:-39:-C4:-52:-68:-47
  3. set str2=%str1::=%
  4. echo %str2%
  5. set str3=%str2:-=%
  6. echo %str3%
  7. pause
复制代码
发表于 2017-6-23 11:11:18 | 显示全部楼层
回复 7# dmxiaoma
gawk 是第三方的 文本处理工具。  原来在linux 很流行的,也有移植到windows的版本。你可以在坛子里找找相关资料,坛子里也有下载。这东东功能强大,比较复杂。
想学好用好 不是几天的事,我也是新手,刚学这个。
 楼主| 发表于 2017-6-23 15:44:12 | 显示全部楼层
谢谢大家的热心帮助,辛苦了!
发表于 2017-6-23 16:35:37 | 显示全部楼层
本帖最后由 happy886rr 于 2017-6-23 16:36 编辑

回复 11# dmxiaoma
常用符号通吃
  1. @echo off

  2. for /f "tokens=1-6 delims=:-" %%a in ("44:-39:-C4:-52:-68:-47") do (
  3.         echo %%a%%b%%c%%d%%e%%f
  4. )

  5. pause
复制代码
发表于 2017-6-28 12:02:21 | 显示全部楼层
本帖最后由 会飞的蜗牛丶 于 2017-6-28 12:03 编辑
  1. set "str={"192.168.1.109", "fe80::e896:88ef:3c9f:8152"}  44:39:C4:52:68:47"
  2. set "str1={"192.168.1.109"}  44:39:C4:52:68:47"

  3. echo %str:*}  =%
  4. echo %str1:*}  =%
复制代码
 楼主| 发表于 2017-6-28 17:36:53 | 显示全部楼层
本帖最后由 dmxiaoma 于 2017-6-28 17:38 编辑

回复 13# 会飞的蜗牛丶

还可以这样哦,这方法真好,代码又简单
如果我要把:号也同时去掉是这样改么:
echo %str:*}  :=%
echo %str1:*}  :=%
发表于 2017-6-28 19:59:34 | 显示全部楼层
回复 14# dmxiaoma


    不是。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 21:27 , Processed in 0.021122 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表