Board logo

标题: 记事本的查找问题 [打印本页]

作者: dragonamd     时间: 2008-8-24 00:33    标题: 记事本的查找问题

用BAT在记事本里查找第一个和第三个并显示出来查找到的内容,该怎么做啊

[ Last edited by dragonamd on 2008-8-24 at 12:34 AM ]
作者: lxmxn     时间: 2008-8-24 00:44
说得不明不白,不清不楚。
作者: dragonamd     时间: 2008-8-24 00:53
R02 u70.843 i-19.91 5-10.17 I5.641  
U71.796 B-18.487 5-8.11 I4.556
G75.13 H-10.666 5-9.16 I-9.209
F75.13 5-7.27 H-10.666 I-9.209
我要查找的是第一个5开头的 也就是5-10.17       和第3个也是5开头的也就是
5-9.16
并显示出来 5-10.17   5-9.16
作者: terse     时间: 2008-8-24 01:49
这个意思吧
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
     for %%j in (%%i) do (
     set str=%%j
     if "!str:~,1!"=="5" (
     set/a n+=1
     if !n! equ 1 echo %%j
     if !n! equ 3 echo %%j&pause&exit
     )))

作者: dragonamd     时间: 2008-8-24 03:46
terse大哥 是这个意思,但是忘记了要检测最新生成的文件
作者: HAT     时间: 2008-8-24 10:11
“忘记了要检测最新生成的文件”是怎么个意思?你什么地方提到过这个需求?
作者: dragonamd     时间: 2008-8-24 12:26
HAT大哥,我是忘记提到了,
作者: HAT     时间: 2008-8-24 12:34
不是有人告诉过你如何检测最新文件了吗,还没有学会?
http://www.cn-dos.net/forum/viewthread.php?tid=42377&fpage=2
作者: dragonamd     时间: 2008-8-24 12:49
呵呵,自己试过加上,但没有效果,可能我比较笨,
作者: HAT     时间: 2008-8-24 12:53
你的完整代码贴出来看看?
作者: dragonamd     时间: 2008-8-24 13:07
HAT 大哥我并没有代码,我是新手来这里学习的, 我按照你的给我的代码加在@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in (a.txt) do (
     for %%j in (%%i) do (
     set str=%%j
     if "!str:~,1!"=="5" (
     set/a n+=1
     if !n! equ 1 echo %%j
     if !n! equ 3 echo %%j&pause&exit
     )))
上,好像显示的是没有定义变量
@echo off&setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b /tc /o-d /a a.txt')
do (
     for %%j in (%%i) do (
     set str=%%j
     if "!str:~,1!"=="5" (
     set/a n+=1
     if !n! equ 1 echo %%j
     if !n! equ 3 echo %%j&pause&exit
     )))
不知道我加的对不对

[ Last edited by dragonamd on 2008-8-24 at 01:13 PM ]
作者: HAT     时间: 2008-8-24 13:23
看看dir的帮助,理解一下dir /b /tc /o-d /a *.txt为何能否查找最新文件。
作者: dragonamd     时间: 2008-8-24 13:46
dir /b /tc /o-d /a    加上这个也不会检测最新的,。打开BAT直接就关闭了
作者: HAT     时间: 2008-8-24 14:01

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /tc /o-d /a *.txt') do (
  set NewFile=%%a
  goto :next
)
:next
for /f "usebackq delims=" %%i in ("%NewFile%") do (
  for %%j in (%%i) do (
    set str=%%j
    if "!str:~,1!"=="5" (
      set/a n+=1
      if !n! equ 1 echo %%j
      if !n! equ 3 echo %%j&pause&exit
    )
  )
)

作者: dragonamd     时间: 2008-8-25 00:38
从中午改到晚上就是自己加不上 能在popup显示,。脑细胞死了不知道多少了,还得请大虾们指点
作者: HAT     时间: 2008-8-25 00:38
你是怎么改的?代码贴出来
作者: dragonamd     时间: 2008-8-25 01:59
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /tc /o-d /a *.txt') do (
  set NewFile=%%a
  goto :next
)
:next
for /f "usebackq delims=" %%i in ("%NewFile%") do (
  for %%j in (%%i) do (
    set str=%%j
    if "!str:~,1!"=="5" (
      set/a n+=1
      if !n! equ 1 echo %%j                    这2行能不能显示在同一行上
      if !n! equ 3 echo %%j&pause&exit   这2行能不能显示在同一行上
do mshta vbscript:createobject("wscript.shell").popup(" %ScdLine:~1,-1%  %%j ")
    )
  )
)
作者: dragonamd     时间: 2008-8-25 18:36
有人可否回答一下,。新手都没人指点吗
作者: HAT     时间: 2008-8-25 19:35
这样可以吗?
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /tc /o-d /a *.txt') do (
  set NewFile=%%a
  goto :next
)
:next
set str=
for /f "usebackq delims=" %%i in ("%NewFile%") do (
  for %%j in (%%i) do (
    set str=%%j
    if "!str:~,1!"=="5" (
      set/a n+=1
      if !n! equ 1 set str=!str!%%j
      if !n! equ 3 set str=!str!&goto :end
    )
  )
)
goto :eof
:end
mshta vbscript:createobject("wscript.shell").popup(" %ScdLine:~1,-1%  !str! ")
不知道你的%ScdLine:~1,-1%从哪里来的,只好跟着你乱写了。

[ Last edited by HAT on 2008-8-26 at 12:35 AM ]
作者: dragonamd     时间: 2008-8-26 00:13
HAT大哥的代码多了一个DO,。呵呵,已经改好了,不过
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /tc /o-d /a *.txt') do (
  set NewFile=%%a
  goto :next
)
:next
set str=
for /f "usebackq delims=" %%i in ("%NewFile%") do (
  for %%j in (%%i) do (
    set str=%%j
    if "!str:~,1!"=="5" (
      set/a n+=1
      if !n! equ 1 set str=!str!%%j     
      if !n! equ 3 set str=!str!&goto :end
    )
  )
)
goto :eof
:end
mshta vbscript:createobject("wscript.shell").popup(" !str! !str! ")   
这样只能显示一个,上面的1和3能不能同时显示在popup(" !str! !str! ")   不过这样做不成功,。希望大哥再帮忙修改一下,
作者: HAT     时间: 2008-8-26 00:35
为什么多了一个do呢?因为19楼的代码是从17楼拷贝的。
19楼已经更新,运行一下,结果贴出来看看。
作者: dragonamd     时间: 2008-8-26 00:40
是更新了,。但20楼的问题能解决吗?
作者: HAT     时间: 2008-8-26 00:49

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /tc /o-d /a *.txt') do (
  set NewFile=%%a
  goto :next
)
:next
set str=
for /f "usebackq delims=" %%i in ("%NewFile%") do (
  for %%j in (%%i) do (
    set str=%%j
    if "!str:~,1!"=="5" (
      set/a n+=1
      if !n! equ 1 set str1=%%j
      if !n! equ 3 set str2=!str1!%%j&goto :end
    )
  )
)
goto :eof
:end
mshta vbscript:createobject("wscript.shell").popup(" !str2! !str2! ")