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

  1. gawk "/SYS\\SYS_/{s=index($0,\"SYS\\SYS_\")+8;print substr($0,s,5)}" a.txt
复制代码

TOP

回复 25# awk


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

TOP

回复 24# jackesy


22楼发帖之前已经测试过了,可能是我们的操作系统不一样吧。

TOP

回复 22# awk


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

TOP

回复 1# jackesy
  1. gawk "/SYS\\SYS_/{gsub(/.*SYS\\SYS_/,\"\");gsub(/\\.*/,\"\"); print >$0\".txt\"}" a.txt
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

回复 21# jackesy


我这里4种写法都行
  1. findstr /i "sys\sys_" a.txt
  2. findstr /i "sys\\sys_" a.txt
  3. findstr /i /c:"sys\sys_" a.txt
  4. findstr /i /l "sys\sys_" a.txt
复制代码

TOP

回复 17# weichenxiehou


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

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

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

TOP

回复 19# jackesy
能找到别人代码的问题,就已经进步了,继续加油吧,不断学习。
看得多说得多,远比不上写得多。

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

回复 15# jackesy
代码在for以内设置的变量,for结束后仍然可以对str这个变量进行调用啊。
看得多说得多,远比不上写得多。

TOP

回复 15# jackesy
不好意思,发现楼上代码有误,更正于此:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('findstr /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. )
复制代码
看得多说得多,远比不上写得多。

TOP

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

TOP

回复 14# weichenxiehou


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

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

返回列表