Board logo

标题: [求助]提取变量字符前17个字符 [打印本页]

作者: qasa     时间: 2007-1-19 05:17    标题: [求助]提取变量字符前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 ]
作者: qasa     时间: 2007-1-19 05:28
为什么我
set ii=%%i:~0,17%%
不行呢?
作者: everest79     时间: 2007-1-19 05:45
for里的替代参数没有这个功能

for /f "tokens=1-3 delims==|" %%a in (mac.ini) do %%a %%b %%c
这样你就可以得到mac ip name三个数据分别为%%a %%b %%c
作者: lxmxn     时间: 2007-1-19 06:01

  试试下面这个?
@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

作者: qasa     时间: 2007-1-19 06:21
回三楼:
你的改成如下可正常使用:
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 ]
作者: lxmxn     时间: 2007-1-19 06:29
  对的,echo后面跟空格和一些特殊的符号,有时效果是一样的。还有很多,类似echo;!str!  echo\!str!  echo/!str!  echo;!str! 等等,自己去试试就会发现。

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

作者: qasa     时间: 2007-1-19 06:31
everest79兄这段语句对我作用很大,以进千里的作用,哈哈哈,可惜我只能为你加2分。谢了
作者: qasa     时间: 2007-1-19 06:34
哦,原来%dbg%是为了方便调试程序的,受教
作者: minmin888     时间: 2007-5-8 11:16
积累!