请教如何获取指定文件所在目录
本程序所在目录下有若干个子文件夹,但知道指定文件a.txt只有一个并在这其中的一个子文件夹里,请教如何知道该文件所在的子文件名和详细路径? 有人来帮一下吗? 有人来帮一下吗? 再顶 高手来帮一下! $sFile = "a.txt";指定要搜索的文件$sDir = @ScriptDir;指定搜索的文件夹
If StringRight($sDir,1)<>"\" Then $sDir &= "\"
;生成一个不存在临时文件
$sOutFile = @TempDir & "\~temp$$$$0"
FileDelete($sOutFile)
While FileExists($sOutFile)
$sOutFile = StringTrimRight($sOutFile,1) & StringRight($sOutFile,1)+1
FileDelete($sOutFile)
WEnd
;执行文件搜索(含子目录)
RunWait(@COMSPEC & ' /c dir /a /s /b "' & $sDir & $sFile & '" > "' & $sOutFile & '"', "", @SW_HIDE)
;得到结果
$sReadFile = FileRead($sOutFile, FileGetSize($sOutFile))
If StringInStr($sReadFile, $sFile) Then
ConsoleWrite("找到文件所处位置:" & $sReadFile & @CRLF);文件所处文件夹: StringTrimRight($sReadFile, stringlen($sFile))
Else
ConsoleWrite($sFile & "在文件夹[" & $sDir & "](含子目录)中没有找到")
EndIf 谢谢楼上的这位朋友。
不知道有 没有简洁点的方法,机器上CMD被禁止了。求解! #include <File.au3>
_Filefind("E:\TEST");在AU3程序目录下执行的话,此处测试路径改为@ScriptDir应该是可以的。
MsgBox(0,0, 'done')
Func _Filefind($_Path)
$folder = _FileListToArray($_Path, "*", 2);找文件夹
If Not IsArray($folder) Then Return 0
For $i = 1 To $folder
$newPath = $_Path & "\" & $folder[$i]
$file = _FileListToArray($newPath, "a.txt", 1);找满足条件的文件
If @error = 0 Then
MsgBox(0,0,$newPath)
ShellExecute($newPath&"\a.txt",0)
Else
_Filefind($newPath);当前目录下找不到再继续其它路径找
EndIf
Next
EndFunc ;==>_Filefind 以前得到别人的帮助,希望这次能帮到别人。另外论坛里搜索一下,也是能找到类似的。改一下就应该可以的。 获取路径(排除文件名)吗?
#Include <WinAPIEx.au3>
_WinAPI_PathRemoveFileSpec
页:
[1]