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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] @WorkingDir:> find(pro) [not exe] *.*

Ответить
Настройки темы
[решено] @WorkingDir:> find(pro) [not exe] *.*

Аватара для semiono

Ветеран


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

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


Нужна "утилита" скрипт, чтобы искать по маске, однако действие обратное!
Иными словами, чтоб задавать паттерн - найти все НЕ {txt или exe или pdf или zip итп.} файлы в текущей директории.
?

ЗЫ очень удобно проверить подкаталоги содеражащие определённый контент, скажем только *.zip на наличие
какого либо случайного мусора, типа всяких *.nfo или *.bak или ещё чего *.~ итд.

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


Отправлено: 21:28, 13-07-2009

 

Аватара для Yashied

Старожил


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

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


Способ 1. FileFindFirstFile() и FileFindNextFile()
Способ 2. _FileListToArray($sPath, '*', 1), затем удали из массива ненужные.

Отправлено: 22:20, 13-07-2009 | #2



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

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


Аватара для proxy

Старожил


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

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


Цитата Yashied:
Способ 1. FileFindFirstFile() и FileFindNextFile()
Способ 2. _FileListToArray($sPath, '*', 1), затем удали из массива ненужные. »
а заме потом? сразу в ходе действия - заностить в массив только нужные.
вернее если тип файла не нужный - то не заносить.

И пример, с перебором подпапок:
читать дальше »


Код: Выделить весь код
#region: - Options
    Opt('GUIOnEventMode',       1)
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        0)
    Opt('TrayIconHide',         1)
#endregion

#region: - Include
    #include <Array.au3>
    #include <GuiEdit.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
#endregion

Local $sSerchInDirPath      = 'd:\Обмен'
Local $sFilesSerchRegMask   = '.*'
Local $sNoFilesSerchRegMask = '(?i)txt|lnk|jpg|exe|pdf|zip'
Local $sDirsSerchRegMask    = '.*'
Local $aSubResultList       = _GetFilesDirsList($sSerchInDirPath, $sFilesSerchRegMask, $sNoFilesSerchRegMask, $sDirsSerchRegMask, 1, 1, 0)

_ArrayDisplay($aSubResultList, 'Result list')

Func _GetFilesDirsList($sSerchInDirPath, $sFilesSerchRegMask='.*', $sNoFilesSerchRegMask='', $sDirsSerchRegMask='.*', $iAddFiles=1, $iAddDirs=0, $fSerchInWrongDir=1, $sRootPath=1, $fAddFromRootDir=1)
    $sSerchInDirPath = StringRegExpReplace($sSerchInDirPath, '\\+$', '')
    Local   $aResultList[1], $aSubResultList[1], $aSub2ResultList[1], $hSerch, $sFileName, $sFilePath, $fAddToResult, $fIsDir, $fDirsSerchRegMask, $fFilesSerchRegMask, $fSerchInWrongDirSub, $fAddFromRootDirSub, $i
            $aResultList[0] = 0

    $hSerch = FileFindFirstFile($sSerchInDirPath & '\' & '*')
    If @error Then Return SetError(1, 0, $aResultList)

    If $sRootPath == 1 AND $iAddDirs == 1 AND $fAddFromRootDir Then
        $aResultList[0] += 1
        ReDim $aResultList[$aResultList[0]+1]
        $aResultList[$aResultList[0]] = $sSerchInDirPath
    EndIf

    While 1
        $sFileName = FileFindNextFile($hSerch)
        If @error == 1 Then ExitLoop

        $sFilePath = $sSerchInDirPath & '\' & $sFileName

        $fAddToResult = 0
        $fIsDir = StringInStr(FileGetAttrib($sFilePath), 'D')
        $fDirsSerchRegMask  = StringRegExp(StringRegExpReplace($sFilePath, '.+\\(.+)$', '\1'), $sDirsSerchRegMask)
        $fFilesSerchRegMask = StringRegExp(StringRegExpReplace($sFilePath, '.+\\(.+)$', '\1'), $sFilesSerchRegMask)
        If $fFilesSerchRegMask Then _
            $fFilesSerchRegMask = NOT StringRegExp(StringRegExpReplace($sFilePath, '.+\\(.+)$', '\1'), $sNoFilesSerchRegMask)

        $fAddFromRootDirSub  = 1
        If NOT $fDirsSerchRegMask Then $fAddFromRootDirSub = 0

        If $fIsDir Then
            If $iAddDirs == 1  AND $fDirsSerchRegMask Then $fAddToResult = 1
        Else
            If $iAddFiles == 1 AND $fFilesSerchRegMask AND $fAddFromRootDir Then $fAddToResult = 1
        EndIf

        If $fAddToResult Then
            If $sRootPath == 1 AND NOT $fIsDir Then
                $aResultList[0] += 1
                ReDim $aResultList[$aResultList[0]+1]
                $aResultList[$aResultList[0]] = $sFilePath
            Else
                $aSubResultList[0] += 1
                ReDim $aSubResultList[$aSubResultList[0]+1]
                $aSubResultList[$aSubResultList[0]] = $sFilePath
            EndIf
        EndIf

        $fSerchInWrongDirSub = 1
        If NOT $fSerchInWrongDir AND $fIsDir AND NOT $fDirsSerchRegMask Then $fSerchInWrongDirSub = 0

        $aSub2ResultList[0] = 0
        If $fIsDir Then
            If $fSerchInWrongDirSub Then _
            $aSub2ResultList = _GetFilesDirsList($sFilePath, $sFilesSerchRegMask, $sNoFilesSerchRegMask, $sDirsSerchRegMask, $iAddFiles, $iAddDirs, $fSerchInWrongDir, 0, $fAddFromRootDirSub)
        EndIf

        If $aSub2ResultList[0] Then
            For $i = 1 To $aSub2ResultList[0]
                $aSubResultList[0] += 1
                ReDim $aSubResultList[$aSubResultList[0]+1]
                $aSubResultList[$aSubResultList[0]] = $aSub2ResultList[$i]
            Next
        EndIf
    WEnd

    FileClose($hSerch)

    For $i=1 To UBound($aSubResultList)-1
        $aResultList[0] += 1
        ReDim $aResultList[$aResultList[0]+1]
        $aResultList[$aResultList[0]] = $aSubResultList[$i]
    Next

    Return SetError(0, 0, $aResultList)
EndFunc

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

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

Отправлено: 23:13, 13-07-2009 | #3


Аватара для Yashied

Старожил


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

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


Цитата proxy:
а заме потом? сразу в ходе действия - заностить в массив только нужные.
вернее если тип файла не нужный - то не заносить. »
Это относится к 2-у способу _FileListToArray()

proxy, ты наверное альтруист, всем даешь готовые (полностью рабочие) решения. А вдруг человек сам хочет додуматься и ему нужна только подсказка в каком направлении, так сказать, двигаться. А дальше он сам ХОЧЕТ решить эту задачу. Хотя я в этом сильно сомневаюсь.

Если всем давать готовые решения, то этот форум долго будет оставаться таким медлительным (2-3 поста в день ). Нужно людям помогать и давать думать, а не лишать их этого. В конце концов по оформлению топика сразу видно, что человек хочет: получить готовое решение или он действительно зашел в тупик и ему нужна подсказка (всего лишь намек). А может он вообще ошибся форумом или заранее знает, что здесь есть добрый и замечательный proxy, который для всех готов писать программы по своей доброте душевной. Причем, даже можно точно не расписывать свою проблему, он ведь догадливый и сам все поймет. Но это лишь мое личное мнение, без обид.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:51, 13-07-2009 | #4


Аватара для proxy

Старожил


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

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



Цитата Yashied:
А вдруг человек сам хочет додуматься и ему нужна только подсказка в каком направлении, »
вот для этого выше и есть твои и мои к ним обсуждения
имхо, если человек хочет сам - что ему мешает в этом разбираться? в примере разбираться? посмотреть на пример и дальше спросить на форуме что и как?
если он хочет - то будет разбираться! ...я против насилия - только хорошим можно сотворить хорошее ) если ему подошел пример - что в этом зазорного?
У меня эта функция уже готовая: перебор папок с подпапками и фильтрами на папки и файлы. А тут даже интерес добавить вариант файлов исключений.

Цитата Yashied:
В конце концов по оформлению топика сразу видно, что человек хочет: получить готовое решение или он действительно зашел в тупик и ему нужна подсказка (всего лишь намек). А может он вообще ошибся форумом или заранее знает, что здесь есть добрый и замечательный proxy, который для всех готов писать программы по своей доброте душевной. Причем, даже можно точно не расписывать свою проблему, он ведь догадливый и сам все поймет. »


Цитата Yashied:
Нужно людям помогать и давать думать, а не лишать их этого. »
я не мешаю другим форумчанам этим заниматься. Креатор мне в этом помогает - если я наглею с примерами

Цитата Yashied:
Но это лишь мое личное мнение, без обид. »
...чему тут обижаться? )) Самое главное - ЗДОРОВ и БОДР!! ))


[off]в
Цитата Yashied:
Это относится к 2-у способу _FileListToArray() »
угу, просмотрел, понял

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 00:03, 14-07-2009 | #5


Аватара для Yashied

Старожил


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

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


proxy, кстати, только сейчас заметил, у тебя отличная сигнатура, особенно вторая строчка.

Отправлено: 00:44, 14-07-2009 | #6


Аватара для semiono

Ветеран


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

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


Цитата Yashied:
А вдруг человек сам хочет додуматься »
Не не хочу сам думать
Я сразу сказал нужна утилита. К сожалению завален делами, будет потом время подумаю, но иногда просто помощь нужна.

Этсамое. Забыл. У меня всегда потребность чтобы всё консольное! И как изначала, я тоже говорил, надоб ввод создать.
Типа - # ifind.exe --not= exe или # ifind.exe --not= txt
Как обычно консольные проги бывают... Ну и print это всё в консоль отчёт
Ох, я уж точно сам не потяну это добить. :\
ЗЫ это хорошо, чтобы потом для всех, как win32 утиль, потомушта я тоже альтурист ))

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


Последний раз редактировалось semiono, 14-07-2009 в 12:45.


Отправлено: 12:30, 14-07-2009 | #7


Googler


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

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


Цитата semiono:
завален делами, будет потом время подумаю, но иногда просто помощь нужна.
Этсамое. Забыл. У меня всегда потребность чтобы всё консольное »
батником быстрей (как в написании, так и в выполнении) ....хотя, если "альтруист", тогда ладно
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 14-07-2009 | #8


Аватара для semiono

Ветеран


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

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


у меня было желание и батник спросить, хотя не знаю, а что разве есть способ?
хотя то что я видел в разделе по батникам меня весьма удивляет! очень крута!

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


Отправлено: 18:42, 14-07-2009 | #9


Googler


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

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


Цитата semiono:
было желание и батник спросить »
в соответствующую ветку
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:20, 15-07-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] @WorkingDir:> find(pro) [not exe] *.*

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] CDROM: Couldn't find NTDLR. asus a9rp Microsoft Windows 2000/XP 5 22-12-2009 22:03
[решено] Интересует куда делись Regedit.exe | NTSD.exe | NETSETUP.exe | TELNET.exe Ricardo Проект WinStyle 11 30-07-2009 23:36
[решено] Проблемы с установкой windows pro sp2 (ntskrnl.exe) frodo17 Microsoft Windows 2000/XP 5 16-01-2007 17:51
[решено] Setup cannot find the End User License Agreement RammFan Microsoft Windows NT/2000/2003 2 31-10-2006 17:09
"Слетел" find.exe и compmgmnt.msc d-mazai Microsoft Windows 2000/XP 4 01-08-2006 09:10




 
Переход