[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

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

回复 2# garyng


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

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

TOP

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

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

回复 8# garyng


    非常感谢。。。。


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

TOP

回复 11# zaixinxiangnian


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

TOP

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

还需要继续加油啊 。。。

TOP

回复 14# weichenxiehou


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

TOP

看到 %%   !!  这些符号不晓得用哪一个,那些小符号 叫人头痛。。

TOP

回复 14# weichenxiehou
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=2 delims=" %%i in ('find /i "sys\sys_" aa.txt') do (
  3.   set "str=%%i"&set "str=!str:*sys\sys_=!"&set "str=!str:~,5!"
  4.   set NS=!str!&goto :end
  5. )
  6. :end
  7. echo %NS%
  8. goto :eof
复制代码
主要是 find /i "sys\sys_" aa.txt  出来的结果 第一排是---------------- aa.txt    必须跳过前面2排才是 真正查找到的内容  skip=2 ,,好了 解决了。。呵呵 。。。  

看看 还需要 修改的没有。。。。。。。。。。

感谢指导。。。。。。。。。。。。。

TOP

回复 17# weichenxiehou


    为什么你改成 findstr 后 反而什么字符串都找不到。。。。

    find /i "sys\sys_" aa.txt             这个可以找到很多包含sys\sys_的行      
    findstr /i "sys\sys_" aa.txt         这个却什么也找不到,很奇怪。。。

    他们有这么大的区别么。。。。。。。。。

TOP

回复 22# awk


    你不信可以自己把一楼的代码存为A.TXT 试试,我执行后什么都没有找到。。不管是直接输出还是保存到另外一个文件都一样。。

TOP

回复 25# awk


    XP 系统不能用  findstr 么。。奇怪 我都能看到它 的  findstr /? 帮助呢。。。

TOP

返回列表