Board logo

标题: [文本处理] 批处理怎么判断文本指定行中是否存在指定单词? [打印本页]

作者: wfnydx    时间: 2010-6-15 10:28     标题: 批处理怎么判断文本指定行中是否存在指定单词?

怎样实现检查文本中第一个带有某一单词的行中是否存在另一单词。
我想做一个可以自动装系统的批处理。发了一个“怎么区分硬盘的贴子”没人回。
思路是这样的。用U盘winpe起动电脑,然后在连接移动硬盘。运行U盘里的批处理自动把移动硬盘的镜像文件恢复到电脑上的硬盘里。正常情况下电脑本身硬盘为 1  ,U盘为 2 ,移动硬盘为 3,所以我就用(ghost.exe -clone,mode=load,src=3.1\429.gho,dst=1, -sure -rb).但有时候用U盘起动后U盘为第一块盘。就会把镜像恢复到U盘上去。我的思路是先用ghost -dd成生一个GHSTSTAT.TXT文件,然后在文件里检查(Drive 0 Hitachi HTS545032B9A300 100425PBPC031DE0V24L)这一行中是否包含“Kingston”(我用的是金士顿的U盘)这个词。如果有就运行(ghost.exe -clone,mode=load,src=3.1\429.gho,dst=2, -sure -rb)如果没有就运行(ghost.exe -clone,mode=load,src=3.1\429.gho,dst=1, -sure -rb)。

[ 本帖最后由 wfnydx 于 2010-6-15 16:12 编辑 ]
作者: hanyeguxing    时间: 2010-6-15 11:06

判断文本1.txt中的第5行(忽略空行)里是否存在单词Hanyeguxing
1,忽略文本中的空行:
  1. @echo off
  2. for /f "delims=" %%a in (1.txt) do (set/a n+=1&set "a=%%a"
  3. setlocal enabledelayedexpansion
  4. if !n!==5 if not "!a!"=="!a:Hanyeguxing=!" echo.存在
  5. Endlocal)
  6. pause
复制代码
2,不忽略文本中的空行:
  1. @echo off
  2. for /f "tokens=1 delims=:" %%a in ('findstr /n /c:"Hanyeguxing" 1.txt') do if %%a==5 echo.存在
  3. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-6-15 11:52 编辑 ]
作者: Batcher    时间: 2010-6-15 11:57

  1. findstr "BatHome" 1.txt
复制代码

作者: wfnydx    时间: 2010-6-15 13:44

多谢,是否可以改成检查文本中第一个带有某一单词的行中是否存在另一单词
作者: Batcher    时间: 2010-6-15 14:31     标题: 回复 4楼 的帖子

能否把你的所有需求全部更新到顶楼?
作者: hanyeguxing    时间: 2010-6-15 16:17

原帖由 wfnydx 于 2010-6-15 13:44 发表
多谢,是否可以改成检查文本中第一个带有某一单词的行中是否存在另一单词
1,全部符合条件:
  1. findstr /c:"Hanye" 1.txt|findstr /c:"Guxing"
复制代码
2,第一个符合条件:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do set "a=%%a"&if not "!a!"=="!a:Hanye=!" if not "!a!"=="!a:Guxing=!" goto:han
  3. echo.不存在&pause&exit
  4. :han
  5. echo.存在:%a%&pause
复制代码

[ 本帖最后由 hanyeguxing 于 2010-6-16 16:54 编辑 ]
作者: wfnydx    时间: 2010-6-16 09:21

多谢寒夜孤星,比以前方便多了。最后后写成这样的。
  1. @echo off
  2. del ghststat.txt
  3. ghost -dd
  4. @echo off&setlocal enabledelayedexpansion
  5. for /f "delims=" %%a in (GHSTSTAT.txt) do set "a=%%a"&if not "!a!"=="!a:Drive 0=!" if not "!a!"=="!a:Kingston=!" goto:han
  6. echo.注意对应机型&pause&ghost.exe -clone,mode=load,src=3.1\429x.gho,dst=1, -sure -rb
  7. exit
  8. :han
  9. echo.注意对应机型:%a%&pause&ghost.exe -clone,mode=load,src=3.1\429x.gho,dst=2, -sure -rb
  10. exit
复制代码





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