中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]提取变量字符前17个字符
作者:
标题: [求助]提取变量字符前17个字符 上一主题 | 下一主题
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『楼 主』:  [求助]提取变量字符前17个字符

setlocal EnableDelayedExpansion
for /f "delims=" %%i in (MAC.ini) do (
  set ii=%%i
  echo %%i:~0,17%%
  set ii=!ii:~0,17!
  echo !ii:~0,17!
  echo !ii!
  pause>nul
  )
pause

MAC.ini内容
00-E0-4C-80-F8-37=125.90.74.75|-075
00-E0-4C-80-F8-46=125.90.74.76|-076
00-E0-4C-80-F8-54=125.90.74.77|-077
00-00-00-00-AE-AE=125.90.74.78|-078
00-E0-4C-80-F8-4A=125.90.74.79|-079
00-E0-4D-0F-D8-32=125.90.74.80|-080

运行后的问题是变量ii为什么不能得到前面17个字符的赋量,要怎么改才行(已经解决)
还有我echo %%i:~0,17%%,为什么不得得到前面17个字符的值,??
显示为:
00-E0-4C-80-F8-37=125.90.74.75|-075:~0,17%
00-E0-4C-80-F8-37
00-E0-4C-80-F8-37

求高手帮忙下,谢谢

[ Last edited by qasa on 2007-1-19 at 05:23 AM ]

2007-1-19 05:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 2 楼』:  

为什么我
set ii=%%i:~0,17%%
不行呢?

2007-1-19 05:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 3 楼』:  

for里的替代参数没有这个功能

for /f "tokens=1-3 delims==|" %%a in (mac.ini) do %%a %%b %%c
这样你就可以得到mac ip name三个数据分别为%%a %%b %%c

   此帖被 +2 点积分    点击查看详情   
评分人:【 qasa 分数: +2  时间:2007-1-19 06:28


2007-1-19 05:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  


  试试下面这个?
@echo off&Setlocal EnableDelayedExpansion
for /f "delims=" %%a in (mac.ini) do (
        set str=%%a
        set str=!str:~0,17!
        echo=!str!
)
pause>nul&exit/b


2007-1-19 06:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 5 楼』:  

回三楼:
你的改成如下可正常使用:
for /f "tokens=1-3 delims==|" %%a in (mac.ini) do echo %%a% %%b% %%c%
谢谢
这语句中的%%a %%b %%c,是不是可以延伸的?
就是说如果用%%i开头的话,就 %%i %%j %%k %%l....这个样子呢?

回四楼:
谢谢
我发现把echo=!str!改成echo !str!也行,是不是使用习惯问题?
还有
@echo %dbg% off   
Setlocal EnableDelayedExpansion
...
上面 %dbg% 是什么意思?变量??求教。。
有%dbg%和没%dbg%有什么区别?

[ Last edited by qasa on 2007-1-19 at 06:26 AM ]

2007-1-19 06:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

  对的,echo后面跟空格和一些特殊的符号,有时效果是一样的。还有很多,类似echo;!str!  echo\!str!  echo/!str!  echo;!str! 等等,自己去试试就会发现。

  %dbg%是一个变量,这是在命令行调试批处理程序设置的临时变量,那你预先在命令行运行set dbg=on,那么这里的echo %dbg% off就相当于echo on off,也就是打开命令行回显,这样就便于你检查程序的运行错误和运行过程,当你设置set dbg=时,执行批处理后,自然是关闭了命令的回显(echo off),这样就不会在屏幕显示命令的回显了。


   此帖被 +2 点积分    点击查看详情   
评分人:【 qasa 分数: +2  时间:2007-1-19 06:32


2007-1-19 06:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 7 楼』:  

everest79兄这段语句对我作用很大,以进千里的作用,哈哈哈,可惜我只能为你加2分。谢了

2007-1-19 06:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qasa
高级用户




积分 959
发帖 311
注册 2006-4-11
来自 广东-LianJiang
状态 离线
『第 8 楼』:  

哦,原来%dbg%是为了方便调试程序的,受教

2007-1-19 06:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
minmin888
初级用户





积分 127
发帖 62
注册 2007-4-19
状态 离线
『第 9 楼』:  

积累!

   此帖被 +1 点积分    点击查看详情   
评分人:【 wangyao 分数: +1  时间:2007-7-12 10:59


2007-5-8 11:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: