_FO_FileSearch()
#include<FileOperations.au3>
$path=@ScriptDir
$aFile=_FO_FileSearch($path,"*.exe",true,125,1,2)
Global $aSFile[UBound($aFile)]
Global $patterka="(?:.*?\s.\d+)\"
For $i=0 To UBound($aFile)-1
Local $fName=_FO_PathSplit($aFile[$i])
If StringRegExp($fName[1],$patterka,0) Then
$aSFile[$i]=$aFile[$i]
EndIf
Next
#cs
В итоге скорее всего(т.к. не тестировал) в массиве $aSFile будут только
те файлы которые соответствуют регулярному выражению
Запустить их можно будет например вот так:
For $i=0 to ubound($aSFile)-1
run($aSFile[$i]);Пустые ячейки команда все равно не запустит
next
#ce
#Include <Array.au3>
Global Const $_sDir = @ScriptDir
Global $_aResult = StringSplit( __GetFileList( $_sDir ), '|' ), $_aTmp
_ArrayDisplay( $_aResult )
; ---
For $Idx = 1 To $_aResult[0] Step 1
$_aTmp = StringRegExp( $_aResult[$Idx], 'твое регулярное выражение' )
If $_aTmp Then
Run( $_sDir & '\' & $_aResult[$Idx], @ScriptDir )
ExitLoop
ElseIf $Idx = $_aResult[0] Then
Exit MsgBox( 16, '', 'Файл не найден.' )
EndIf
Next
MsgBox( 64, '', 'Файл запущен!' )
Func __GetFileList( $sPath, $sFilter = '*', $iFlag = 0)
Local $hSearch, $sFile, $sFileList
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "") & "\"
If Not FileExists($sPath) Then _
Return SetError(1, 1, "")
If StringRegExp($sFilter, "[\\/:><\|]|(?s)\A\s*\z") Then _
Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then _
Return SetError(3, 3, "")
$hSearch = FileFindFirstFile($sPath & $sFilter)
If @error Then Return _
SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @Error Then _
ExitLoop
If ($iFlag + @Extended = 2) Then _
ContinueLoop
$sFileList &= '|' & $sFile
WEnd
FileClose($hSearch)
If Not $sFileList Then _
Return SetError(4, 4, "")
Return StringTrimLeft($sFileList, 1)
EndFunc ;==>__GetFileList
#include <FileOperations.au3>
#include <Array.au3>
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_Run_Tidy=y
Global $aRez[1], $aRezSerch[1], $aArray = DriveGetDrive("FIXED")
If @error Then Exit
For $i = 1 To UBound($aArray) - 1
$aRezSerch = _FO_FileSearch($aArray[$i], "*.exe", True, 0)
For $j = 1 To UBound($aRezSerch) - 1
_ArrayAdd($aRez, $aRezSerch[$j])
Next
Next
For $i = 1 To UBound($aRez) - 1
If StringRegExp($aRez[$i], '(?i).*?(\S+?\s?v\d+?[\.]\d+?[\.]\d+?[\.]exe)', 0) = 1 Then Run($aRez[$i])
Next
Ну почему, переменные там поддерживаются.это Вы про то что там не указана возможность использования регулярок и переменных?
Это и без записи понятно.там о них не записано
И не должно.если значение переменной является регулярное выражение, то это не работает
Это вы просто в $path переменную не присвоили путь который нужен например:Alkantel сказал(а):Постоянно эта ошибка "Error: Expected a "=" operator in assignment statement"
$path=@scriptdir
$path="C:\user"
_Run( 'папка для поиска', 'паттерн' ) ;Уберите все параметры если не знаете что вписать. И положите в папку со скриптом любой exe.
If @Error Then
MsgBox( 16, 'Error', 'Error code: ' & @Error )
EndIf
Func _Run( $_sDir = @ScriptDir, $_sPatternName = '([^\.]+\.exe)$', $_sWorkDir = @ScriptDir, $_vShowFlag = @SW_SHOW, $_vOptFlag = Default )
Local $_aResult = StringSplit( __GetFileList( $_sDir ), '|' ), $_aTmp, $_iPid
For $Idx = 1 To $_aResult[0] Step 1
$_aTmp = StringRegExp( $_aResult[$Idx], $_sPatternName )
If $_aTmp Then
$_iPid = Run( $_sDir & '\' & $_aResult[$Idx], $_sWorkDir, $_vShowFlag, $_vOptFlag )
Return SetError( @Error, 0, $_iPid )
ElseIf $Idx = $_aResult[0] Then
Return SetError( -1, 0, 0 )
EndIf
Next
EndFunc
Func __GetFileList( $sPath, $sFilter = '*', $iFlag = 0)
Local $hSearch, $sFile, $sFileList
$sPath = StringRegExpReplace($sPath, "[\\/]+\z", "") & "\"
If Not FileExists($sPath) Then _
Return SetError(1, 1, "")
If StringRegExp($sFilter, "[\\/:><\|]|(?s)\A\s*\z") Then _
Return SetError(2, 2, "")
If Not ($iFlag = 0 Or $iFlag = 1 Or $iFlag = 2) Then _
Return SetError(3, 3, "")
$hSearch = FileFindFirstFile($sPath & $sFilter)
If @error Then Return _
SetError(4, 4, "")
While 1
$sFile = FileFindNextFile($hSearch)
If @Error Then _
ExitLoop
If ($iFlag + @Extended = 2) Then _
ContinueLoop
$sFileList &= '|' & $sFile
WEnd
FileClose($hSearch)
If Not $sFileList Then _
Return SetError(4, 4, "")
Return StringTrimLeft($sFileList, 1)
EndFunc ;==>__GetFileList
Он идёт в поставке с AutoIt.у меня нету Array.au3
_RunWithRegExp(@DesktopDir, '(?i)^.*?\s.[\d\.]+\.exe$')
Func _RunWithRegExp($sPath, $sRegExpName, $sWorkDir = '', $iShowFlags = @SW_SHOW, $iOptFlags = 0)
Local $hFile, $sNextFile, $iRet
$hFile = FileFindFirstFile($sPath & '\*.*')
If $hFile = -1 Then
Return SetError(1, 0, 'No files/directories matched the search pattern')
EndIf
While 1
$sNextFile = FileFindNextFile($hFile)
If @error Then ExitLoop
If StringRegExp($sNextFile, $sRegExpName) Then
$iRet = Run($sPath & '\' & $sNextFile, $sWorkDir, $iShowFlags, $iOptFlags)
ExitLoop
EndIf
WEnd
FileClose($hFile)
Return $iRet
EndFunc
$LogFile = "TEMP.txt"
$path00 = "C:\"
$hSearch = FileFindFirstFile ("Setup*exe")
$sName = FileFindNextFile($hSearch)
FileOpen($path00 & "\TEMP.txt", 1)
$hFile = FileOpen($path00 & $LogFile, 1)
If $hFile = -1 Then
MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
Exit
EndIf
FileWriteLine($hFile, $sName)
$hRead = FileReadLine($path00 & $LogFile)
Run($hRead)
FileClose($hSearch)
FileClose($hFile)
$hSearch = FileFindFirstFile ("Setup*exe")
$sName = FileFindNextFile($hSearch)
Run($sName)
Специально проверил только что - все варианты работают.Извините, но ничто из предложенного не заработало.