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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск и запуск приложения согласно условию If...

Ответить
Настройки темы
[решено] Поиск и запуск приложения согласно условию If...

Аватара для semiono

Ветеран


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

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


Помогите грамотно и сжато написать скрипт, который попытается запустить приложение согдласно условию...
Например, найти
@ProgramFiles\Cubase\Cubase.exe или
@ProgramFiles\Cubase 4\Cubase.exe или
@ProgramFiles\Cubase\Cubase4.exe или
@ProgramFiles\Cubase 4\Cubase4.exe
если error=1 то продолжить работу скрипта.... ну или Exit
При первом совпадении нужно выйти из "цикла", чтобы не сработало дважды...
То-есть, нашёл, запустил, и продолжил далее скрипт...
Хотя гуру, конечно могут посоветовать regexp парисногом искать часть имени, я не против, это даже лучше!
Пожалуйста не придирайтесь, я действительно не шарю в логических построениях... Мне очень надо!

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


Отправлено: 21:57, 30-12-2009

 

Аватара для madmasles

Ветеран


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

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


semiono,
Извините. Я так увлекся поиском, что не проверил скрипт в случае, если файла нет. Я код поправил(в очередной раз ). Сейчас должен работать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:19, 17-02-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для semiono

Ветеран


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

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


madmasles, во-первых работает, во-вторых очень оперативно! Я уже хотел отказаться от батников,
думал овета не скоро дождусь, так как уже пару дней прошло, видимо ночами работаешь!? +1

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


Отправлено: 00:31, 17-02-2010 | #12


Аватара для semiono

Ветеран


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

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


Надо усложнить код! Я бы сразу сказал да не думал, что вообще результат будет такой хороший

Почему-то не пошло так
$aReturn = _FileSearch(@ProgramFilesDir, StringSplit("Cubase*.exe|Nuendo*.exe","|")) // мои сочинения )))

Вообщем надо две проги запустить, всё одинакого в обоих случаях, третью прогу не надо, две хватит!

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


Отправлено: 22:56, 17-02-2010 | #13


Аватара для madmasles

Ветеран


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

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


semiono,
Так найдите сначала одну - запустите, потом вторую, третью... и .тд.

Отправлено: 23:17, 17-02-2010 | #14


Аватара для semiono

Ветеран


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

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


Код: Выделить весь код
$aReturn = _FileSearch(@ProgramFilesDir, "Cubase*.exe")
$aReturn = _FileSearch(@ProgramFilesDir, "Nuendo*.exe")

If $aReturn[0] = 0 Then
    Run(@SystemDir & '\Cubase.cmd', "", @SW_HIDE)
    Run(@SystemDir & '\Nuendo.cmd', "", @SW_HIDE)    
Else
    Run($aReturn[1])
Надо так Cubase.exe or Nuendo.exe, одно из двух только

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


Отправлено: 23:23, 17-02-2010 | #15


Аватара для madmasles

Ветеран


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

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


semiono,
Вы напишите в какой последовательности и какие программы должны запускаться.

Отправлено: 23:37, 17-02-2010 | #16


Аватара для semiono

Ветеран


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

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


1 = Cubase.exe 2 = Nuendo.exe, но это не важно, и я переделать смогу
---
я тоже кодю сам тока безрезультатно пока..
If ProcessExists($aReturn) = -1 Then ))))

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


Отправлено: 23:49, 17-02-2010 | #17


Аватара для madmasles

Ветеран


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

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


semiono,
Нет, давайте конкретно.
1. Если есть Cubase.exe, то запускается Cubase.exe и выход.
2. Если Cubase.exe нет, то ищем Nuendo.exe, нашли - запускаем и выход.
3. Если нет не того не другого, то что запускаем?

Вот так у меня получилось:
Код: Выделить весь код
$aReturnCubase = _FileSearch(@ProgramFilesDir, "Cubase*.exe")
$aReturnNuendo = _FileSearch(@ProgramFilesDir, "Nuendo*.exe")

If $aReturnCubase[0] <> 0 Then
    Run($aReturnCubase[1])
    Exit
ElseIf $aReturnNuendo[0] <> 0 Then
    Run($aReturnNuendo[1])
    Exit
Else
    MsgBox(0, "", " Не найден ни Cubase*.exe, ни Nuendo*.exe")
EndIf
Exit

Func _FileSearch($sPath, $sFileMask)
    Local $sOut = StringToBinary("0" & @CRLF, 2), $aOut
    Local $hDir = Run(@ComSpec & ' /U/C DIR "' & $sPath & '\' & $sFileMask & '" /S/B/A-D', @SystemDir, @SW_HIDE, 6)

    While 1
        $sOut &= StdoutRead($hDir, False, True)
        If @error Then ExitLoop
    WEnd

    $aOut = StringRegExp(BinaryToString($sOut, 2), "[^\r\n]+", 3)
    If @error Then Return SetError(1)

    $aOut[0] = UBound($aOut) - 1
    Return $aOut
EndFunc   ;==>_FileSearch
Если нужна другая последовательность, то меняйте их местами.

Я поправил код.

Последний раз редактировалось madmasles, 18-02-2010 в 00:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:58, 17-02-2010 | #18


Аватара для semiono

Ветеран


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

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


Цитата madmasles:
3. Если нет не того не другого, то что запускаем? »
Тогда ничего не запускаем!
---
Я извиняюсь, наверное цикл не совсем верный, оба приложения открываются.
В конце
Run(@SystemDir & '\Nuendo.cmd', "", @SW_HIDE)
очевидно сработает при любом условии, но даже если закоментировать всёравно что-то не то.

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


Последний раз редактировалось semiono, 18-02-2010 в 00:21.


Отправлено: 00:09, 18-02-2010 | #19


Аватара для madmasles

Ветеран


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

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


semiono,
Цитата:
Вообщем надо две проги запустить...
Я поправил код.
Нашли Cubase*.exe - запустили его, вышли.
Нет Cubase*.exe, нашли Nuendo*.exe - запустили его, вышли.
Ничего не нашли - сообщили об этом и вышли.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:24, 18-02-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Поиск и запуск приложения согласно условию If...

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как организовать поиск нужного диска и запуск с него приложения? Nun-Nun Скриптовые языки администрирования Windows 16 28-05-2009 22:12
Прочие - удалённый запуск/завершение приложения danya_rus Программное обеспечение Windows 0 27-05-2009 18:48
Запуск терминального приложения Rulezzz2 Microsoft Windows NT/2000/2003 2 11-03-2009 16:00
Интерфейс - [решено] Поиск файлов из приложения bofi Microsoft Windows 2000/XP 2 06-10-2008 18:37
запуск DOS приложения Pupil Microsoft Windows 2000/XP 8 29-12-2003 12:42




 
Переход