Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

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

Ответить
Настройки темы
[решено] Показать имена всех EXE файлов в папке

Аватара для Centrinar

Старожил


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

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


Изменения
Автор: Centrinar
Дата: 05-03-2011
Как показать имена всех EXE файлов в папке?

СПАСИБО!

Отправлено: 17:38, 05-03-2011

 

Аватара для Centrinar

Старожил


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

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


Проблема если скрипт запускать с Флешки, он после @ScriptDir ставит еще одну "\" т.е. я указываю $aReturn = _FileCMDSearch(@ScriptDir & "\exefiles\, "*.exe") в итоге он пишет: D:\\exefiles\...
Как решить данную проблему?

Отправлено: 20:45, 15-03-2011 | #11



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

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


Аватара для AZJIO

Старожил


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

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


Centrinar, смотри, должно работать, только я для примера DLL ещё указал.
Код: Выделить весь код
; пишем тут что нам нужно
$aga_papka="C:\Program Files\K-Lite Codec Pack"
$aga_tupi="exe;dll"

; дальше ничего не трогаем
Global $Stack[50], $Stack1[50]

$Text =''
FileFindNextFirst($aga_papka)
While 1
    $tempname = FileFindNext($aga_tupi,1)
    If Not $tempname Then ExitLoop
    $Text &= $tempname & @CRLF
WEnd

;пишем в файл
$file = FileOpen(@ScriptDir&'\вот_они_EXE.ini',2)
FileWrite($file, $Text)
FileClose($file)

Func FileFindNextFirst($FindCat)
    $Stack[0] = 1
    $Stack1[1] = $FindCat
    $Stack[1] = FileFindFirstFile($FindCat & "\*.*")
    Return $Stack[1]
EndFunc   ;==>FileFindNextFirst

;$mode=0 - файлы
;$mode=1 - типы файлов
;$mode=2 - каталоги
;$Level=  от 1 до 49
;$type = может иметь перечисление расширений, например exe;dll;com точнее $tempname = FileFindNext('exe;dll;com',1,1)
Func FileFindNext($type = 'log', $mode = 0, $Level = 49)
    While 1
        $file = FileFindNextFile($Stack[$Stack[0]])
        If @error Then
            FileClose($Stack[$Stack[0]])
            If $Stack[0] = 1 Then
                Return ""
            Else
                $Stack[0] -= 1
                ContinueLoop
            EndIf
        Else
            If StringInStr(FileGetAttrib($Stack1[$Stack[0]] & "\" & $file), "D") > 0 Then
                If $Stack[0] = $Level Then ContinueLoop
                $Stack[0] += 1
                $Stack1[$Stack[0]] = $Stack1[$Stack[0] - 1] & "\" & $file
                $Stack[$Stack[0]] = FileFindFirstFile($Stack1[$Stack[0]] & "\*.*")
                If $mode = 2 Then
                    Return $Stack1[$Stack[0]]
                Else
                    ContinueLoop
                EndIf
            Else
                If $mode = 2 Then ContinueLoop
                If $mode = 1 Then
                    ;If StringInStr (';'&$type&';', ';'&StringRight($Stack1[$Stack[0]] & "\" & $file, 3)&';')=0  Then
                    If StringInStr (';'&$type&';', ';'&StringRegExpReplace($Stack1[$Stack[0]] & "\" & $file, '.*\.(\S+)', '\1')&';')=0  Then
                        ContinueLoop
                    Else
                        Return $Stack1[$Stack[0]] & "\" & $file
                    EndIf
                Else
                    Return $Stack1[$Stack[0]] & "\" & $file
                EndIf
            EndIf
        EndIf
    WEnd
EndFunc   ;==>FileFindNext
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:15, 15-03-2011 | #12


Аватара для beve

Старожил


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

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


Цитата:
Проблема если скрипт запускать с Флешки, он после @ScriptDir ставит еще одну "\"
Самое простое:
Код: Выделить весь код
$Path= @ScriptDir & '\exefiles\'
$Path=StringReplace( $Path, "\\", "\")

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

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

Отправлено: 21:27, 15-03-2011 | #13


Аватара для madmasles

Ветеран


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

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


Цитата Centrinar:
в итоге он пишет: D:\\exefiles\... »
Код: Выделить весь код
$s_Dir = 'E:\' & '\exefiles\'
MsgBox(64, 'До', $s_Dir)
If StringInStr($s_Dir, '\\') Then
    $s_Dir = StringReplace($s_Dir, '\\', '\')
EndIf
MsgBox(64, 'После', $s_Dir)
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:30, 15-03-2011 | #14


Новый участник


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

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


Большое спасибо, очень пригодилось!

Отправлено: 22:21, 21-03-2011 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Объединение всех файлов в папке AlexVong Скриптовые языки администрирования Windows 5 24-06-2015 23:34
CMD/BAT - [решено] Как имена файлов расположенных в одной папке записать в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 6 12-05-2009 21:44
Интерфейс - Имена файлов в папке Windows\Media Билл Гейтс Microsoft Windows 2000/XP 3 09-11-2008 13:10
[решено] Импорт всех reg-файлов в папке? s127d Автоматическая установка Windows 2000/XP/2003 2 24-05-2008 05:11
php как вывести список всех файлов в папке E-mail Вебмастеру 6 12-02-2005 17:33




 
Переход