中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-25 23:45
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]提取变量字符前17个字符
可打印版本  2,464 / 8
第1楼 qasa 发表于 2007-01-19 05:17
高级用户 发帖 311 积分 959 来自 广东-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 ]
第2楼 qasa 发表于 2007-01-19 05:28
高级用户 发帖 311 积分 959 来自 广东-LianJiang
为什么我
set ii=%%i:~0,17%%
不行呢?
第3楼 everest79 发表于 2007-01-19 05:45
金牌会员 发帖 1,127 积分 2,564
for里的替代参数没有这个功能

for /f "tokens=1-3 delims==|" %%a in (mac.ini) do %%a %%b %%c
这样你就可以得到mac ip name三个数据分别为%%a %%b %%c
第4楼 lxmxn 发表于 2007-01-19 06:01
版主 发帖 4,938 积分 11,386

  试试下面这个?
第5楼 qasa 发表于 2007-01-19 06:21
高级用户 发帖 311 积分 959 来自 广东-LianJiang
回三楼:
你的改成如下可正常使用:
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 ]
第6楼 lxmxn 发表于 2007-01-19 06:29
版主 发帖 4,938 积分 11,386
  对的,echo后面跟空格和一些特殊的符号,有时效果是一样的。还有很多,类似echo;!str! echo\!str! echo/!str! echo;!str! 等等,自己去试试就会发现。

  %dbg%是一个变量,这是在命令行调试批处理程序设置的临时变量,那你预先在命令行运行set dbg=on,那么这里的echo %dbg% off就相当于echo on off,也就是打开命令行回显,这样就便于你检查程序的运行错误和运行过程,当你设置set dbg=时,执行批处理后,自然是关闭了命令的回显(echo off),这样就不会在屏幕显示命令的回显了。
第7楼 qasa 发表于 2007-01-19 06:31
高级用户 发帖 311 积分 959 来自 广东-LianJiang
everest79兄这段语句对我作用很大,以进千里的作用,哈哈哈,可惜我只能为你加2分。谢了
第8楼 qasa 发表于 2007-01-19 06:34
高级用户 发帖 311 积分 959 来自 广东-LianJiang
哦,原来%dbg%是为了方便调试程序的,受教
第9楼 minmin888 发表于 2007-05-08 11:16
初级用户 发帖 62 积分 127
积累!
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023