Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Это хорошее решение! Только я с дальнейшими действиями запарился поэтому пока до этого не доходило.
Но вот вернулся, лучше бы это переделать если возможно, чтобы искать только ....[test]Cubase[/test].... & .exe
Ато вариантов многовато может быть относительно первого поста, имя же файла всегда точно определено,
если отсечь (пробел)4.exe и путь C:\~..\..\
Я вдобавок хотел бы чтобы в случае ненахождения батник запускался, обычно у меня в system32 лежит
одноимённый батник system32\cubase.cmd который так же запустит приложение.
Поэтому, очень хотелось бы чтобы расширение exe и cmd поддерживались одновременно.
Но скрипт так же должен завершиться при запуске первого совпадения.

Я вот тут взял скриптик для поиска, правда для другой цели, чуть исправил...
http://forum.oszone.ru/thread-166317.html
Код: Выделить весь код
$path = @ScriptDir & "\Plugins"
$sFile = FileList($path, "*.inf")

If $sFile[0]>0 Then
        For $i=1 To $sFile[0]
                Run('rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 132 ' & $sFile[$i])
        Next
EndIf

Func FileList($sPath, $inFilter = '*', $exFilter = '');$includeFilter='*.txt,*.htm'  $excludeFilter='www,asp,desktop'
        $sPath = StringRegExpReplace($sPath, '\\+$', '')
        Local $aRetArray[1], $sFindNextFile, $sCurrentPath, $iFL
        Global $FolderList[2]
        $aRetArray[0] = 0
        $FolderList[0] = 1
        $FolderList[1] = $sPath
        Local $sFindFirstFile = FileFindFirstFile($sPath & "\*")
        If @error = 1 Then Return SetError(1, 0, -1)
        #Region
        If StringRight($inFilter, 1) = ',' Then $inFilter = StringTrimRight($inFilter, 1)
        $inFilter = StringReplace($inFilter, '^', '\^')
        $inFilter = StringReplace($inFilter, '.', '\.')
        $inFilter = StringReplace($inFilter, '(', '\(')
        $inFilter = StringReplace($inFilter, ')', '\)')
        $inFilter = StringReplace($inFilter, '[', '\[')
        $inFilter = StringReplace($inFilter, ']', '\]')
        $inFilter = StringReplace($inFilter, '+', '\+')
        $inFilter = StringReplace($inFilter, '$', '\$')
        $inFilter = StringReplace($inFilter, '*', '.*')
        $inFilter = '(?i)^' & StringReplace($inFilter, ',', '$|^') & '$'
        If StringInStr($exFilter, ',') > 0 And $exFilter <> '' Then
                If StringRight($exFilter, 1) = ',' Then $exFilter = StringTrimRight($exFilter, 1)
                $exFilter = StringReplace($exFilter, ',', '|')
                $exFilter = StringReplace($exFilter, '.', '\.')
                $exFilter = StringReplace($exFilter, '(', '\(')
                $exFilter = StringReplace($exFilter, ')', '\)')
                $exFilter = StringReplace($exFilter, '[', '\[')
                $exFilter = StringReplace($exFilter, ']', '\]')
                $exFilter = StringReplace($exFilter, '+', '\+')
                $exFilter = StringReplace($exFilter, '$', '\$')
                $exFilter = '(?i)(' & StringReplace($exFilter, '^', '\^') & ')'
        EndIf
        #EndRegion
        $iFL = 1
        Do
                $sFindFirstFile = FileFindFirstFile($FolderList[$iFL] & "\*")
                If @error = 0 Then
                        While 1
                                $sFindNextFile = FileFindNextFile($sFindFirstFile)
                                If @error = 1 Then ExitLoop
                                $sCurrentPath = $FolderList[$iFL] & "\" & $sFindNextFile
                                If StringInStr(FileGetAttrib($sCurrentPath), "D") Then;папка
                                        $FolderList[0] += 1
                                        If UBound($FolderList) < $FolderList[0] + 1 Then ReDim $FolderList[$FolderList[0] + 1000]
                                        $FolderList[$FolderList[0]] = $sCurrentPath
                                Else;файл
                                        If StringRegExp($sFindNextFile, $inFilter) = 1 And ($exFilter = '' Or StringRegExp($sFindNextFile, $exFilter) = 0) Then
                                                $aRetArray[0] += 1
                                                If UBound($aRetArray) < $aRetArray[0] + 1 Then ReDim $aRetArray[$aRetArray[0] + 1000]
                                                $aRetArray[$aRetArray[0]] = $sCurrentPath
                                        EndIf
                                EndIf
                        WEnd
                EndIf
                FileClose($sFindFirstFile)
                $iFL += 1
        Until $iFL > $FolderList[0]
        ReDim $aRetArray[$aRetArray[0] + 1]
        ReDim $FolderList[$FolderList[0] + 1]
        Return $aRetArray
	EndFunc  ;==>FileList
Однако, не знаю, слишком огромный скрипт для простой задачи, нельзя ли его упростить?
И в данном случае применить для запуска Cubase 4.exe который надо найти на диске и запустить?

PS для inf файликов, если не затруднит тоже поправте скрипт, если возможно что-то там упростить?

-------
Полезное сообщение


Последний раз редактировалось semiono, 11-02-2010 в 03:32.


Отправлено: 03:22, 11-02-2010 | #4