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

[文本处理] [已解决]批处理怎样查找特殊TXT文件的指定特殊字符后面的字符,并赋予一个变量?

本帖最后由 jackesy 于 2011-9-16 13:45 编辑

请教,有这么一个txt文件AA.TXT,里面全部是 一下类似代码
  1. 723fb954-d931-4348-b672-82a188e587b5.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\723fb954-d931-4348-b672-82a188e587b5.dsm|0|7|0
  2. 2fe0b7ef-4e24-4ab9-9c6e-e8b75791605e.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\2fe0b7ef-4e24-4ab9-9c6e-e8b75791605e.dsm|0|7|0
  3. f9d63b68-88f7-4a29-bd4a-014a3834c700.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\f9d63b68-88f7-4a29-bd4a-014a3834c700.dsm|0|7|0
  4. c1b932f5-431a-4774-9f12-5f9b6dcdd266.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\c1b932f5-431a-4774-9f12-5f9b6dcdd266.dsm|0|7|0
  5. 90cc9074-a3e8-4e1a-87e6-6f630422451d.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\90cc9074-a3e8-4e1a-87e6-6f630422451d.dsm|0|7|0
  6. ec0deea5-98fe-4ed8-80c8-8f04f3b5f300.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\ec0deea5-98fe-4ed8-80c8-8f04f3b5f300.dsm|0|7|0
  7. 010befdf-a6bd-4ec5-8ba5-9a4ab5c97219.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\010befdf-a6bd-4ec5-8ba5-9a4ab5c97219.dsm|0|7|0
  8. 18f34778-395e-4145-8357-7a038f60a34a.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\18f34778-395e-4145-8357-7a038f60a34a.dsm|0|7|0
  9. e7fc93e9-37b0-4333-92b5-6e07ffeeecfb.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\e7fc93e9-37b0-4333-92b5-6e07ffeeecfb.dsm|0|7|0
  10. 276fcdaf-8ebb-4ae1-832a-12aeb0f13c8a.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\276fcdaf-8ebb-4ae1-832a-12aeb0f13c8a.dsm|0|7|0
  11. e01f2da1-69cb-48f3-9826-301328c53c1d.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\e01f2da1-69cb-48f3-9826-301328c53c1d.dsm|0|7|0
  12. 0b2ca530-11a7-4f66-888f-f4428a3d1639.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\0b2ca530-11a7-4f66-888f-f4428a3d1639.dsm|0|7|0
  13. 4ce5a4c7-5e52-4e13-a58d-d165e618eb4e.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\4ce5a4c7-5e52-4e13-a58d-d165e618eb4e.dsm|0|7|0
  14. 1115a7db-611e-483d-bb16-978ea2a06d62.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\1115a7db-611e-483d-bb16-978ea2a06d62.dsm|0|7|0
  15. fefc7953-aa8e-44f6-ba1e-01f0f2712a1c.dsm|D:\G920\DIYRom\MYG920DIY\Temp\Dump\fefc7953-aa8e-44f6-ba1e-01f0f2712a1c.dsm|0|7|0
  16. simtkit.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\simtkit.dll|1|4|0
  17. simtkui.lnk|D:\G920\DIYRom\MYG920DIY\SYS\SYS_29017\SIM_TKit\simtkui.lnk|0|6|0
  18. simtkui.lnk=|D:\G920\DIYRom\MYG920DIY\SYS\SYS_29017\SIM_TKit\simtkui.lnk|0|6|0
  19. wince.nls|D:\G920\DIYRom\MYG920DIY\SYS\SYS_29017\WinCENLS_Lang_0804\wince.nls|0|6|0
  20. exsmime.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\exsmime.dll|1|4|0
  21. kbdus.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\kbdus.dll|1|6|0
  22. mstscax.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\mstscax.dll|1|4|0
  23. MvkLib.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\MvkLib.dll|1|4|0
  24. wpctsc.exe|D:\G920\DIYRom\MYG920DIY\Temp\Dump\wpctsc.exe|1|4|0
  25. wpctsc.lnk|D:\G920\DIYRom\MYG920DIY\SYS\SYS_29017\RemoteDesktopMobile\wpctsc.lnk|0|6|0
  26. Avrcp_MPplugin.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\Avrcp_MPplugin.dll|1|4|0
  27. bta2dp.dll|D:\G920\DIYRom\MYG920DIY\Temp\Dump\bta2dp.dll|1|6|0
复制代码
现在需要从AA.TXT 文件中 查找“SYS\SYS_”这个字符串(只有这一个地方是固定的字符串),得到后面的29017(主要是得到这五个字符) 固定的五位字符,并赋予一个变量,然后以这个变量为文件名建立一个文件(比如29017.exe)

找了很多代码 都不行,特此来请教。。。。

谢谢。。。。。。。。。。
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 garyng 于 2011-9-15 20:57 编辑

试试看这个:
它可以更短的~
  1. @echo off
  2. type AA.txt|find /i "SYS\SYS_" >>tmp.txt
  3. for /f "delims=\ tokens=6" %%i in ('type tmp.txt') do (
  4. for /f "delims=_ tokens=2" %%h in ('echo %%i') do (
  5. set a=%%h
  6. type nul>>%%h.exe
  7. )
  8. )
  9. del /q tmp.txt
  10. pause>nul
复制代码

TOP

本帖最后由 jackesy 于 2011-9-15 21:14 编辑

回复 2# garyng


    太感谢了 可以了。  还能更短 更简单么。。。。请指教。。。

太多行符合 条件 都包含 SYS\SYS_  处理循环 太费时了,整个下来时间太长了。。。

TOP

还有一个问题,就是 可能文件AA.TXT 比较大 ,半天才会结束。。。能一找到  字符串 就 停止么。。。应该时间的确有点长。。。

TOP

这个~
  1. @echo off
  2. type AA.txt|find /i "SYS\SYS_" >tmp.txt
  3. for /f "delims=\ tokens=6" %%i in ('type tmp.txt') do (
  4. for /f "delims=_ tokens=2" %%h in ('echo %%i') do (
  5.          set a=%%h
  6.          type nul>>%%h.exe
  7. )
  8. )
  9. del /q tmp.txt
  10. pause>nul
复制代码
1

评分人数

TOP

回复 5# garyng


    一样 还是循环半天,应该是 第一个循环 一直在循环,在第二个循环后加一个判断,,找到了 就 结束掉 或则跳出去。。。这样呢。。

TOP

终于好了,非常感谢。。。
  1. @echo off
  2. type objList.txt|find /i "SYS\SYS_" >tmp.txt
  3. for /f "delims=\ tokens=6" %%i in ('type tmp.txt') do (
  4. for /f "delims=_ tokens=2" %%h in ('echo %%i') do (
  5.          set a=%%h
  6.          type nul>>%%h.exe
  7. echo %%h
  8. if %%i NEQ %%h goto :end
  9. )
  10. )
  11. :end
  12. del /q tmp.txt
  13. pause>nul
复制代码

TOP

这叫抛砖引玉~

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=6 delims=\" %%i in ('find /i "sys\sys_" aa.txt') do (
  3.   set str=%%i&set str=!str:*_=!
  4.   cd.>!str!.exe&goto :eof
  5. )
复制代码
1

评分人数

看得多说得多,远比不上写得多。

TOP

回复 8# garyng


    非常感谢。。。。


同时也谢谢楼上这位热心人。。。。。。。。

TOP

回复 5# garyng

请问你括号里面的 type 和 echo 是什么用意,,,没有它们不行吗?

TOP

回复 11# zaixinxiangnian


    就是 把在文件里面查找到的字符串 显示出来,并在 FOR 语句里面作为 DO 后面的字符串 进行操作,,应该就这个意思吧。。呵呵 我菜鸟。。。。

TOP

其实还有一个问题,我还在琢磨。因为上面的代码 都是窃取 第六个 节,一旦所要查找的字符串不在第六节 就没有办法了, 我上面也说了  只有查找的字符串是固定的,其他的都是可变的。。。

还需要继续加油啊 。。。

TOP

本帖最后由 weichenxiehou 于 2011-9-16 23:15 编辑

回复 13# jackesy
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('find /i "sys\sys_" aa.txt') do (
  3.   set "str=%%i"&set "str=!str:*sys\sys_=!"&set "str=!str:~,5!"
  4.   cd.>!str!.exe&goto :eof
  5. )
复制代码
其实还是很简单的,把找到的行从开始到sys\sys_的内容去掉,然后取5个字符就行了。
1

评分人数

    • jackesy: 感谢 再次帮助。。。。技术 + 1
看得多说得多,远比不上写得多。

TOP

回复 14# weichenxiehou


    这个看懂了,还有一个 小小问题 你的这个代码,怎么在 FOR 以外调用找到的 字符串。。我需要把找到的 赋予一个变量,可以再一个批处理任何地方 调用!!我的脑袋有点卡壳了。。

TOP

返回列表