遍历所有目录找到文件夹,并执行此文件夹下所有EXE程序的AU3脚本。
本帖最后由 heimahack 于 2011-6-24 09:53 编辑求此代码,要求搜索所有盘符(包括光驱与U盘盘符)和所有目录下面的Autosoft文件夹下面的1.exe,找到后执行Autosoft文件夹下面所有EXE程序。 本帖最后由 虫子樱桃 于 2011-6-24 12:32 编辑
#Include <File.au3>
Dim $u,$i,$j,$file
Func executegunction()
$u = DriveGetDrive("ALL")
For $i In $u
$file = _FileListToArray($i&"\Autosoft","*.exe",1)
For $j In $file
ShellExecute($i&"\Autosoft\"&$j)
Next
Next
EndFunc写了一个,没测试,可能会有问题。哈哈。上班了,基本思路就是这样。。。 这个很明显是想写病毒的............ 本帖最后由 heimahack 于 2011-6-24 09:54 编辑
不是写病毒, 我是做系统安装版定制,需要在T13时运行目录下的文件,但光盘安装的时候这个目录是在光盘下面I138文件夹下,而在PE下用虚拟光驱来安装时,这个目录会复制到硬盘上,在C:\WINDOWS\下面。所以得找个这样的程序。还有, 谢谢楼上的代码,可是不成功 #Include <File.au3>
$Drive= DriveGetDrive( "all" )
For $i = 1 to $Drive
Find_folder($Drive[$i])
Next
Func Find_folder($searchdir)
$search = FileFindFirstFile($searchdir & "\*")
If $search = -1 Then return -1
While 1
$file = FileFindNextFile($search)
If @error Then
FileClose($search)
return
ElseIf stringinstr(FileGetAttrib($searchdir & "\" & $file),"D") then
If $file="Autosoft" Then
$FileList=_FileListToArray($searchdir & "\" & $file,'*.exe',1)
If Not @error Then
For $j=1 To $FileList
ShellExecute($searchdir & "\" & $file&"\"&$FileList[$j])
Next
EndIf
Else
Find_folder($searchdir & "\" & $file)
EndIf
EndIf
WEnd
EndFunc
回复 4# heimahack
额,函数调用没呢??? 本帖最后由 heimahack 于 2011-6-24 16:16 编辑
回复 6# 虫子樱桃
谢谢大侠,你的这段是对的。但如果我想指定搜索的文件名是Autosoft\1.exe文件,然后执行与1.EXE目录下所有文件呢?我的意思是以Autosoft\1.exe为判断,如果其它目录有Autosoft这个文件夹,但在Autosoft\下并没有1.exe这个文件,就不执行,如果搜到Autosoft文件夹,并且Autosoft下面有1.exe文件,才执行这个目录下面的所有EXE文件,这又该怎么做呢? 楼主试着自己加些条件就行了,大框架就是上面的代码了 #Include <File.au3>
$Drive= DriveGetDrive( "all" )
For $i = 1 to $Drive
Find_folder($Drive[$i])
Next
Func Find_folder($searchdir)
$search = FileFindFirstFile($searchdir & "\*")
If $search = -1 Then return -1
While 1
$file = FileFindNextFile($search)
If @error Then
FileClose($search)
return
ElseIf stringinstr(FileGetAttrib($searchdir & "\" & $file),"D") then
If $file="Svcpack" Then
$FileList=_FileListToArray($searchdir & "\" & $file,'*.exe',1)
If Not @error Then
For $j=1 To $FileList
ShellExecute($searchdir & "\" & $file&"\"&$FileList[$j])
Next
EXIT
EndIf
Else
Find_folder($searchdir & "\" & $file)
EndIf
EndIf
WEnd
EndFunc
Sleep(3000)
MsgBox(0,"Error!!!","对不起,没有找到AutoRun文件夹!")
我加了个退出命令,原创的执行找到程序后AU3没有退出。所以加了句进去。不好意思。
但我还是想以Autosoft\1.EXE来做判断。就是不懂AU3 回复 7# heimahack
If Not FileExists($i&"\Autosoft\1.exe")
Return $i
EndIf
在 For $i In $u这一行下面加这样一个判断试试。偶是菜鸟,不知道正确不正确、、、、、 本帖最后由 netegg 于 2011-6-24 20:23 编辑
回复 9# heimahack
楼主, 麻烦你明确下文件和文件夹的意思,越来越看不懂你要的效果了
一会儿是文件名是Autosoft\1.exe文件(如果是,请问如何创建的这个文件),一会儿是Autosoft文件夹下的1.exe文件,到底是什么?
还有该怎么理解执行1.EXE目录(1.EXE这是个目录?)下所有文件(所有文件指的是什么文件,可执行的还是其他类型的)?
试着想了想,楼主是不是想遍历文件夹,找到所有内含1.exe文件的autosoft文件夹,并执行其下的所有的exe?
包含autosoft下的子文件夹吗? 我加了个退出命令,原创的执行找到程序后AU3没有退出。所以加了句进去。不好意思。
但我还是想以Autosoft\ ...
heimahack 发表于 2011-6-24 17:31 http://www.autoitx.com/images/common/back.gif
以Autosoft\1.EXE来做判断的话,加多一条判断条件FileExists($searchdir & "\" & $file&"\1.exe") 即可。#Include <File.au3>
$Drive= DriveGetDrive( "all" )
For $i = 1 to $Drive
Find_folder($Drive[$i])
Next
Func Find_folder($searchdir)
$search = FileFindFirstFile($searchdir & "\*")
If $search = -1 Then return -1
While 1
$file = FileFindNextFile($search)
If @error Then
FileClose($search)
return
ElseIf stringinstr(FileGetAttrib($searchdir & "\" & $file),"D") then
If $file="Autosoft" And FileExists($searchdir & "\" & $file&"\1.exe") Then
$FileList=_FileListToArray($searchdir & "\" & $file,'*.exe',1)
If Not @error Then
For $j=1 To $FileList
ShellExecute($searchdir & "\" & $file&"\"&$FileList[$j])
Next
EndIf
Else
Find_folder($searchdir & "\" & $file)
EndIf
EndIf
WEnd
EndFunc 本帖最后由 heimahack 于 2011-6-25 04:03 编辑
回复 11# netegg
不好意思,我的语文学得不好,其实我的意思是这样的。我就是怕判断出问题,就是怕电脑内有两个或者两个以上的这个Autosoft同名的文件夹。而另一个文件夹内却不是我要执行程序的目录(就是说另一个同名文件夹内不是我所存放的可执行文件目录),所以我才想到以Autosoft\1.exe文件作为判断,如果这个文件夹内有这个1.exe文件就执行这个文件夹下面所有可执行文件。否则继续寻找,如果找不到就得退出这个程序,或者提示找不到文件。我想说的就是以Autosoft文件夹下的1.exe文件做判断,但我找不到更好的不出错的判断方法。麻烦高人给个更好的判断方法。 本帖最后由 heimahack 于 2011-6-25 10:53 编辑
回复 12# xiaozui #Include <File.au3>
那又该怎么天加这句FileExists($searchdir & "\" & $file&"\1.exe")
可以把全码发上来吗? 回复xiaozui #Include
那又该怎么天加这句FileExists($searchdir & "\" & $file&"\1.exe")
可以 ...
heimahack 发表于 2011-6-25 10:26 http://www.autoitx.com/images/common/back.gif
汗,我已经发了,在12楼
页:
[1]
2