290277275 发表于 2009-12-11 19:29:21

就差一步,请高手帮我解下IF

本帖最后由 290277275 于 2009-12-12 08:35 编辑

搜索当前目录上所有*.LOG文件,并查找LOG文件内“ABC”字符串,当搜到“ABC”运行Q。BAT
当未搜到ABC继续搜索直到搜到为止

; 显示当前目录中所有文件的文件名
$search = FileFindFirstFile("*.log")

$file = FileFindNextFile($search)

If StringInStr(FileRead($file), "abc") Then

RunWait ( "q.bat")

Else

   差这一步:当未搜到ABC继续搜索直到搜到为止   

EndIf


; 关闭搜索句柄
FileClose($search)

ajian55 发表于 2009-12-11 19:54:17

不可能不成功啊:
$search = FileFindFirstFile("*.*")
While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    MsgBox(4096, "文件:", $file)
WEnd
FileClose($search)

sxd 发表于 2009-12-11 20:31:59

没怎么看懂 不过FileFindFirstFile 是支持通配符的

netegg 发表于 2009-12-13 06:49:04

本帖最后由 netegg 于 2009-12-13 06:55 编辑

#include <File.au3>
$aA = _filelisttoarray("dir", ".log")
for $file in $aA
$retval = _ReplaceStringInFile($file,“ABC”,“ABC”)
if $retval <> 0 then
RunWait ( "q.bat")
endif
next

不太清楚,abc在同一文件有多处的时候是执行多次q.bat还是只执行一次,这段是执行一次,多次的话,改一下循环里的条件

maxkingmax 发表于 2009-12-13 08:51:07

$search = FileFindFirstFile("*.log")
$file = FileFindNextFile($search)
while 1
If StringInStr(FileRead($file), "abc") Then
RunWait ( "q.bat")
exitloop ;执行完要跳出循环就使用这句
EndIf
wend
FileClose($search)
页: [1]
查看完整版本: 就差一步,请高手帮我解下IF