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

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

Ответить
Настройки темы
[решено] Поиск каталогов

Аватара для TERMINAL

Ветеран


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

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


Здравствуйте ! Погуглив так и не нашёл ответа или примера как возможно найти папку 5DEL во всех подкаталогах папки TEST, глубина папки TEST неизвестна, и удалить все найденные каталоги 5DEL.
Заранее спс.

-------
Автоматизация прежде всего....


Отправлено: 13:24, 26-12-2012

 

Аватара для Creat0R

Must AutoIt


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

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


Цитата TERMINAL:
Погуглив так и не нашёл ответа или примера »
поиск папки autoit

А также есть уже тема на форуме.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:54, 26-12-2012 | #2



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

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


Аватара для TERMINAL

Ветеран


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

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


Creat0R, Как бы нашёл скрипт
читать дальше »
Global $Stack[50], $Stack1[50]

$Text = ""
FileFindNextFirst("C:\WINDOWS")
While 1
$tempname = FileFindNext('',2,2)
If $tempname = "" Then ExitLoop
$Text &= $tempname & @CRLF
WEnd

FileFindNextFirst("C:\WINDOWS")
While 1
$tempname = FileFindNext('',0,1)
If $tempname = "" Then ExitLoop
$Text &= $tempname & @CRLF
WEnd

MsgBox(4096, '', $Text)

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
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 StringRight($Stack1[$Stack[0]] & "\" & $file, 4)<>'.'&$type Then
ContinueLoop
Else
Return $Stack1[$Stack[0]] & "\" & $file
EndIf
Else
Return $Stack1[$Stack[0]] & "\" & $file
EndIf
EndIf
EndIf
WEnd
EndFunc ;==>FileFindNext

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

-------
Автоматизация прежде всего....


Отправлено: 17:18, 26-12-2012 | #3


Аватара для Creat0R

Must AutoIt


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

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


Цитата TERMINAL:
нашёл скрипт »
Который нужно заключать в тег кода.

Цитата TERMINAL:
не могу добиться глубины поиска папок в каталоге »
А по ссылке перейти не судьба?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:24, 26-12-2012 | #4


Аватара для TERMINAL

Ветеран


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

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


Creat0R, Судьбу испытывал и переходил по ссылке, но там же опять поиск файлов, мне файлы не нужны-нужны сами папки
PHP код: Выделить весь код

#include <Array.au3>


$aReturn _FileSearch(@WindowsDir"File\....$"0)

_ArrayDisplay($aReturn)

Func _FileSearch($sPath$sRegExp_FileMask$iCaseSense=0)
    
Local $iPID$sStdOutRead$aRet$sFindStr$sCaseStr

    
If Not $iCaseSense Then $sCaseStr ' /I'
    
$sFindStr 'Dir "' $sPath '" /S /B | FindStr' $sCaseStr ' /R "' $sRegExp_FileMask '"'

    
$iPID Run(@ComSpec ' /C ' $sFindStr, @SystemDir, @SW_HIDE2)

    While 
1
        $sStdOutRead 
&= StdoutRead($iPID)
        If @
error <> 0 Then ExitLoop
    WEnd

    $aRet 
StringSplit(StringStripCR(StringStripWS($sStdOutRead3)), @LF)
    Return 
SetError(@error0$aRet)
EndFunc 

Реализовать поиск папок я так и не смог.

-------
Автоматизация прежде всего....


Отправлено: 10:42, 27-12-2012 | #5


Аватара для Creat0R

Must AutoIt


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

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


Цитата TERMINAL:
там же опять поиск файлов, мне файлы не нужны-нужны сами папки »
Там и поиск папок:

Код: Выделить весь код
$aReturn = _FileSearch('C:\Test', "\\5DEL$", 0)
_ArrayDisplay($aReturn)
Ещё вот тут есть более новая версия данного метода:

Код: Выделить весь код
#include <Array.au3>

$aReturn = _FileDirList('C:\Test', "5DEL", 2)
_ArrayDisplay($aReturn)

Func _FileDirList($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
    Local $sOutBin, $sOut, $aOut, $aMasks, $sRead, $hDir, $sAttrib, $sFiles

    If Not StringInStr(FileGetAttrib($sPath), "D") Then
        Return SetError(1, 0, 0)
    EndIf

    If $iSubDir = 1 Then
        $sAttrib &= ' /S'
    EndIf

    If $iSort = 1 Then
        $sAttrib &= ' /O:N'
    EndIf

    Switch $iFlag
        Case 1
            $sAttrib &= ' /A-D'
        Case 2
            $sAttrib &= ' /AD'
        Case Else
            $sAttrib &= ' /A'
    EndSwitch

    $sOut = StringToBinary('0' & @CRLF, 2)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
    $aMasks = StringSplit($sFileMask, ';')

    For $i = 1 To $aMasks[0]
        If StringStripWS($aMasks[$i], 8) = "" Then
            ContinueLoop
        EndIf

        $sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'

        If $i < $aMasks[0] Then
            $sFiles &= ';'
        EndIf
    Next

    $hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)

    While ProcessExists($hDir)
        $sRead = StdoutRead($hDir, False, True)

        If @error Then
            ExitLoop
        EndIf

        If $sRead <> "" Then
            $sOut &= $sRead
        EndIf
    Wend

    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)

    If @error Or UBound($aOut) < 2 Then
        Return SetError(2, 0, 0)
    EndIf

    $aOut[0] = UBound($aOut)-1
    Return $aOut
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

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

Отправлено: 15:44, 27-12-2012 | #6


Старожил


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

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


Creat0R, А как-то возможно на диске найти пустые каталоги или подкаталоги и удалить их?
И такой ещё вопросик- если известен путь С:\TEST02\Downloads\TMP\VIA\FORCED\5x86\new\viamraid64.cat
то как возможно получить из него путь С:\TEST02\Downloads\TMP\VIA\FORCED\5x86\new ? (т.е. без самого файла)

Последний раз редактировалось -TRM-, 11-01-2013 в 12:44.


Отправлено: 11:50, 11-01-2013 | #7


Аватара для madmasles

Ветеран


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

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


Цитата -TRM-:
А как-то возможно на диске найти пустые каталоги или подкаталоги и удалить их? »
Попробуйте примерно так.
Код: Выделить весь код
#include <Array.au3>
#include <WinAPIEx.au3>

Global $aRet, $iSuccess = 0, $iError = 0

$aRet = _FileDirList(@HomeDrive, '*', 2)
_ArrayDisplay($aRet)
For $i = 1 To $aRet[0]
    If _WinAPI_PathIsDirectoryEmpty($aRet[$i]) Then
        If DirRemove($aRet[$i]) Then
            $iSuccess += 1
        Else
            $iError += 1
        EndIf
    EndIf
Next

MsgBox(64, 'Info', StringFormat('All:\t%i\nDel:\t%i\nError:\t%i', $aRet[0], $iSuccess, $iError))

Func _FileDirList($sPath, $sFileMask = "*", $iFlag = 0, $iSubDir = 1, $iSort = 0)
    Local $sOutBin, $sOut, $aOut, $aMasks, $sRead, $hDir, $sAttrib, $sFiles

    If Not StringInStr(FileGetAttrib($sPath), "D") Then
        Return SetError(1, 0, 0)
    EndIf

    If $iSubDir = 1 Then
        $sAttrib &= ' /S'
    EndIf

    If $iSort = 1 Then
        $sAttrib &= ' /O:N'
    EndIf

    Switch $iFlag
        Case 1
            $sAttrib &= ' /A-D'
        Case 2
            $sAttrib &= ' /AD'
        Case Else
            $sAttrib &= ' /A'
    EndSwitch

    $sOut = StringToBinary('0' & @CRLF, 2)
    $sPath = StringRegExpReplace($sPath, '\\+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, '^;+|;+$', '')
    $sFileMask = StringRegExpReplace($sFileMask, ';{2,}', ';')
    $aMasks = StringSplit($sFileMask, ';')

    For $i = 1 To $aMasks[0]
        If StringStripWS($aMasks[$i], 8) = "" Then
            ContinueLoop
        EndIf

        $sFiles &= '"' & $sPath & '\' & $aMasks[$i] & '"'

        If $i < $aMasks[0] Then
            $sFiles &= ';'
        EndIf
    Next

    $hDir = Run(@ComSpec & ' /U /C DIR ' & $sFiles & ' /B' & $sAttrib, @SystemDir, @SW_HIDE, 6)

    While ProcessExists($hDir)
        $sRead = StdoutRead($hDir, False, True)

        If @error Then
            ExitLoop
        EndIf

        If $sRead <> "" Then
            $sOut &= $sRead
        EndIf
    WEnd

    $aOut = StringRegExp(BinaryToString($sOut, 2), '[^\r\n]+', 3)

    If @error Or UBound($aOut) < 2 Then
        Return SetError(2, 0, 0)
    EndIf

    $aOut[0] = UBound($aOut) - 1
    Return $aOut
EndFunc   ;==>_FileDirList
WinAPIEx.au3
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:33, 11-01-2013 | #8


Аватара для AZJIO

Старожил


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

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


-TRM-,
_FO_SearchEmptyFolders

Цитата -TRM-:
(т.е. без самого файла) »
_FO_PathSplit или регулярное выражение
Код: Выделить весь код
StringRegExpReplace($sPath, '^(.*)\\.*$', '\1')

Последний раз редактировалось AZJIO, 11-01-2013 в 22:31.

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

Отправлено: 17:58, 11-01-2013 | #9


Аватара для madmasles

Ветеран


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

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


Цитата -TRM-:
как возможно получить из него путь С:\TEST02\Downloads\TMP\VIA\FORCED\5x86\new ? (т.е. без самого файла) »
Или так.
Код: Выделить весь код
$sPath = @ScriptFullPath
ConsoleWrite($sPath & @LF)
ConsoleWrite(StringRegExpReplace($sPath, '\\[^\\]*$', '') & @LF)
Взято отсюда: Деление пути к файлу на части

Последний раз редактировалось madmasles, 11-01-2013 в 22:53.

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

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



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках Gawr33 Скриптовые языки администрирования Windows 11 23-04-2011 23:09
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файлов на разных дисках 4zz Скриптовые языки администрирования Windows 2 21-02-2011 16:07
CMD/BAT - Синхронизация каталогов Makzs Скриптовые языки администрирования Windows 4 03-11-2009 15:56
Поиск скрытых каталогов на диске fooms Хочу все знать 5 05-02-2004 09:56
20-ка поисковиков и каталогов Agent Comanche Вебмастеру 6 18-06-2003 01:52




 
Переход