[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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出来的代码。万分感谢

  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
复制代码

TOP

来个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}"
复制代码

TOP

echo;%var:~-17%

TOP

  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
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

感谢大家的热情帮助。
还有个问题请教:
如上截取出来的结果是  44:39:C4:52:68:47 我是放在变量mac里面的
比如我要显示出来就是echo, MAC地址^: %MAC%
我不想结果中有“:”号就改成 echo, MAC地址^: %MAC::=%
假如结果中有还有其它内容我也想替换掉
比如结果是 44:-39:-C4:-52:-68:-47
我要同时去掉:号和-号
echo, MAC地址^: %MAC::=%   要怎么改代码?

TOP

回复 3# cfwyy77_bat
我运行代码后提示:
'gawk' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

gawk是什么?是需要装什么程序吗?
新手小白,不好意思了。

TOP

回复 7# dmxiaoma


下载之后跟你的bat文件放在同一个目录
http://bbs.bathome.net/s/tool/index.html?key=gawk
测试代码之前请做好备份

TOP

回复 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
复制代码
测试代码之前请做好备份

TOP

回复 7# dmxiaoma
gawk 是第三方的 文本处理工具。  原来在linux 很流行的,也有移植到windows的版本。你可以在坛子里找找相关资料,坛子里也有下载。这东东功能强大,比较复杂。
想学好用好 不是几天的事,我也是新手,刚学这个。

TOP

谢谢大家的热心帮助,辛苦了!

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 会飞的蜗牛丶 于 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:*}  =%
复制代码

TOP

本帖最后由 dmxiaoma 于 2017-6-28 17:38 编辑

回复 13# 会飞的蜗牛丶

还可以这样哦,这方法真好,代码又简单
如果我要把:号也同时去掉是这样改么:
echo %str:*}  :=%
echo %str1:*}  :=%

TOP

回复 14# dmxiaoma


    不是。
测试代码之前请做好备份

TOP

返回列表