Board logo

标题: [文本处理] [已解决]批处理怎样提取字符? [打印本页]

作者: sbjatje    时间: 2010-9-9 14:12     标题: [已解决]批处理怎样提取字符?

答案在11楼
如下:
  开始--运行--cmd
C:\Documents and Settings\Administrator>d:
D:\>cd proewildfire 4.0\bin
D:\proeWildfire 4.0\bin>ptchostid.bat
解说:当我输入ptchostid.bat时就会出现下面的结果

PTC HOSTID = 00-1D-7D-74-B5-C7


我想提取 00-1D-7D-74-B5-C7 号码 但是每电脑这个号码都不一样,想完成这样的效果批处理应该如何写?   
请知道的老大,讲下,,谢谢

[ 本帖最后由 sbjatje 于 2010-9-10 16:21 编辑 ]
作者: hfg1977    时间: 2010-9-9 14:28

第三方命令行程序
set "str=替换"
sed -i "00-1D-7D-74-B5-C7/%str%/" ptchostid.bat
作者: edmond    时间: 2010-9-9 14:54

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=~" %%a in (1.txt) do (set t=%%a
  4.   if "!t:~11,1!"=="="  (echo !t:~13,17!)
  5. )
  6. pause
复制代码
可以的
作者: cjiabing    时间: 2010-9-9 15:43

好好学习FOR /f吧!~
注意观察“PTC HOSTID = 00-1D-7D-74-B5-C7”,里面的标点符号有【=】和【-】,用做分隔符的话应嘎提取2-7节。
代码自己写,又不学习又老是问这种超出自己能力的事情。
作者: Batcher    时间: 2010-9-9 21:13

  1. @echo off
  2. cd /d "D:\proeWildfire 4.0\bin"
  3. for /f "tokens=4" %%a in ('ptchostid.bat') do (
  4.     set "str=%%a"
  5. )
  6. echo,%str%
复制代码

作者: CUer    时间: 2010-9-9 21:30

  1. "proeWildfire 4.0\bin\ptchostid.bat" | sed "s/.*= //"
复制代码

作者: sbjatje    时间: 2010-9-10 10:35     标题: 谢谢各位,老大们

上面的回答都是字符的提取,,,
   我的前提是先运行,ptchostid.bat  再提取他的显示结果中的那一组号码,,,,而不是直接把PTC HOSTID = 00-1D-7D-74-B5-C7 ,这个拿来取00-1D-7D-74-B5-C7

[ 本帖最后由 sbjatje 于 2010-9-10 14:57 编辑 ]
作者: sbjatje    时间: 2010-9-10 10:57     标题: batcher 这个批处理,运行不了。

@echo off
for /f "tokens=4" %%a in ('"D:\proeWildfire 4.0\bin\ptchostid.bat"') do (
    set "str=%%a"
)
echo,%str%

  说ptchostid,bat不是内部指令。。。。。
   请batcher 简说下,是不是在批处理中不能用ptchostid.bat,不能有*.bat的文件
作者: sbjatje    时间: 2010-9-10 15:42     标题: 批处理怎样提取字符?

群里的大侠们好:
    问个问题  我这个批处理为什么后半节执行不了,就是从F:开始下面是做字符替换的。。。
前面的1.txt能产生,后面就执行不了,是不是中间要加什么语名,,,,谢高手指导下
  1. @echo off
  2.   d:
  3. cd proewildfire 4.0\bin
  4. ptchostid >>d:\1.txt
  5. f:
  6. cd setup\4.0crack
  7. setlocal enabledelayedexpansion
  8. for /f "tokens=4 delims= " %%a in (d:\1.txt) do set mac=%%a
  9. (for /f "delims=" %%i in (ptc_licfile.txt) do (
  10.   set str=%%i
  11.   set str=!str:00-00-00-00-00-00=%mac%!
  12.   echo !str!
  13. ))>tmp_
  14. del ptc_licfile.txt
  15. ren tmp_ ptc_licfile.txt
复制代码
路过的大侠们帮我看下,那里写错了,,,,
作者: Batcher    时间: 2010-9-10 16:07     标题: 回复 8楼 的帖子

4楼代码已更新,请重新测试。
作者: sbjatje    时间: 2010-9-10 16:20     标题: 这样写就行了,,,

@echo off
  d:
cd proewildfire 4.0\bin
ptchostid >>d:\1.txt

就会在D盘的1.txt记录ptchostid运行的结果。。。。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2