【已解决】请问路径含通配符怎么判断文件是否存在??
本帖最后由 229989799 于 2022-12-23 14:05 编辑举个栗子:
例如某软件路径是;***星号部分是存在不同版本,需要运行它去卸载软件;
$aPath = "C:\Program Files (x86)\Kingsoft\WPS Office\*****\utility\uninst.exe"
FileExist($aPath) ;不支持星号路径。求助一下论坛的热心网友;先谢谢大家啦; 可以先 FileFindFirstFile('C:\Program Files (x86)\Kingsoft\WPS Office\*') ... 不是很会用A版说的FileFindFirstFile函数;在目录下有多个文件夹,需判断哪个文件夹里面才有uninst.exe;然后run它。
举个路径栗子:
C:\Program Files (x86)\Kingsoft\WPS Office\11.8.2.11718\utility\uninst.exe
C:\Program Files (x86)\Kingsoft\WPS Office\11.8.2.11739\utility\uninst.exe
C:\Program Files (x86)\Kingsoft\WPS Office\***********\utility\uninst.exe 按照a版的方法,遍历文件夹下面所有的文件,找到uninst.exe,然后运行。 #include <Array.au3>
Local $aFile = _FileFind('C:\Program Files (x86)\Kingsoft\WPS Office\*', '\utility\uninst.exe')
_ArrayDisplay($aFile)
Func _FileFind($sPath, $sFile)
Local $hSearch = FileFindFirstFile($sPath)
If $hSearch = -1 Then Return MsgBox(0, '', '错误: 没有匹配的文件/目录.')
Local $aPath = StringRegExp($sPath, '^(.*)([^\\]*[\*\?][^\\]*)$', 1)
If @error Then Return MsgBox(0, '', '搜索格式错误')
If $aPath = '' Then $aPath = @ScriptDir & '\'
Local $sFileName, $sList = ''
While 1
$sFileName = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended And FileExists($aPath & $sFileName & $sFile) Then $sList &= $aPath & $sFileName & $sFile & @CRLF
WEnd
FileClose($hSearch)
If $sList = '' Then Return MsgBox(0, '', '错误: 没有找到匹配的文件.')
Return StringRegExp($sList, '\V+', 3)
EndFunc ;==>_FileFind A版UDF比较实用。
自己摸索的差太远了。
#include <WinAPIShPath.au3>
$sPath = FileFindFirstFile("C:\Program Files (x86)\Kingsoft\WPS Office\*")
While 1
$aSearch = FileFindNextFile($sPath)
If @error Then ExitLoop
$result = "C:\Program Files (x86)\Kingsoft\WPS Office\"&$aSearch&"\utility\uninst.exe"
If FileExists($result) then ConsoleWrite($result & @CRLF)
WEnd
FileClose($sPath)
页:
[1]