Jump to content
Sign in to follow this  
MariusN

Searching "within" folders AND sub-folders

Recommended Posts

MariusN

Hope someone can help me here. I did get some help before, but it didnt seem to work the way I wanted it to...This is my scenario --->

On my "Homedrive", i have a complete CD with Windows ( directory "i386" )

I would like to search the WHOLE of directory "i386"...Here is my current code...but only reads the FILES in the directory of "i386"

Func _Start() ;<-------Here my program starts!!!
$first = FileFindFirstFile($i386 & "\*.*")
    _loop()
EndFunc

Func _loop()
; START -- CALCULATES FIRST INPUT !!!
$read4 = GUICtrlRead($box1)
$first1 = StringTrimRight($read4, 1)
$first1a = StringRight($first1, 12)
; ENDS -- CALCULATES FIRST INPUT !!!
While 1
  ; START CALCULATES 2ND INPUT !!!
  $recurse = FileFindNextFile($first)
  If @error Then
   GUICtrlSetData($box2, "Finished.....Nothing found!")
   GUICtrlSetData($label, "Finished.....Nothing found!")
   GUICtrlSetData($label2, "")
   $check = 0
   FileClose($first)
   ExitLoop
  EndIf
  $first2 = StringTrimRight($recurse, 1)
  $first2a = StringRight($first2, 6)
  $test1 = GUICtrlSetData($box2, $i386 & "\" & $recurse)
  If StringInStr($first1a, $first2a) Then
   If StringLen($first2) > 5 Then
    GUICtrlSetData($label, '   If NOT correct file, please press ')
    Sleep(30)
    GUICtrlSetData($label2, $match)
    $check = 1
    ExitLoop
   Else
   EndIf
  EndIf
  ; END CALCULATES 2ND INPUT !!!
WEnd
EndFunc   ;==>_loop

Below is a code i got from a member, but i'm having trouble implimenting it correctly --->

Func r_search($i386)
Local $files = FileFindFirstFile($i386 & "\*.*")
$first = FileFindFirstFile($i386 & "\*.*")
While 1
  $Next = FileFindNextFile($files)
  If @error Then Return ($folders)
  If @extended Then
   $folders[UBound($folders) - 1] = $i386 & '\' & $Next
   ReDim $folders[UBound($folders) + 1]
   MsgBox(0, "", $files)
   r_search($i386 & '\' & $Next) ; uncomment this line to recurse folders
  EndIf
WEnd

EndFunc

...Any help would be appreciate guys...SOMEWHERE along the line i'm slipping-up :oops:

Share this post


Link to post
Share on other sites
guinness

Search the forum for RecFileListToArray.au3 by Melba23.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
MariusN

Search the forum for RecFileListToArray.au3 by Melba23.

...thx Melba23

Share this post


Link to post
Share on other sites
Belini

@MariusN See if this script helps you:

#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=0
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=Função: Criar uma lista de arquivos dentro de pastas e sub_pastas
#AutoIt3Wrapper_Res_Description=Belini Scripts
#AutoIt3Wrapper_Res_Fileversion=1.4.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Feito por Belini em 10/01/2012
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
; ==================================================================
; Autor: Belini
; Data: 10/01/2012
; Autoit versão 3.3.6.1
; Objetivo: Criar uma lista de arquivos dentro de pastas e sub_pastas
; Observação: Código livre use como quiser mais mantenha os créditos
; ==================================================================
#Include <WindowsConstants.au3>; include necessário
#include <GuiListView.au3>; include necessário
#include <Array.au3>; include necessário
#include <Constants.au3>; include necessário
#include <ButtonConstants.au3>; include necessário
#include <GUIConstantsEx.au3>; include necessário
Global $tamanho_arquivos = 0, $tamanho_arquivos_2 = 0, $contando_arquivo = 0, $conta_arquivo = 0, $conta_letras = 0, $grava_tamanho = 0, $numera = 0; variáveis globais
Global $caminho, $opcao_arq, $gui, $Checkbox_extensao, $Checkbox_arq, $Checkbox_tudo, $input_extensao, $Input_arq, $arquivo; variáveis globais
Global $conta_letra = "", $ext_definida = "", $Faz_lista = "", $Faz_lista_2 = "", $proc_arquivo = "", $grava_tamanho_2 = 0 ;variáveis globais
Global $opcao_tudo = 0, $opcao_extensao = 0, $conta_extensao = 0, $mostra_lista = 0, $minhalista, $form, $tempo_inicio; variáveis globais
HotKeySet('{ESC}', '_sair'); usa a tecla "ESC" para chamar a função sair

If Not FileExists(@ScriptDir & 'Configurações.ini') Then; verifica se o arquivo existe se não existir cria um arquivo
IniWrite(@ScriptDir & 'Configurações.ini', 'Endereço do diretório', 'caminho', "C:\Windows\System32\"); cria o arquivo com um endereço inicial
EndIf
gui_principal()
Func gui_principal()

$INI_diretorio = IniRead(@ScriptDir & 'Configurações.ini', 'Endereço do diretório', 'caminho', ''); faz a leitura
#region ### START Koda GUI section ### Form=
$gui = GUICreate("Pesquisador.exe    belini@ymail.com", 333, 204, 309, 273); cria a gui
GUICtrlCreateLabel("Diretório onde será feita a pesquisa dos arquivos.", 8, 16, 237, 17); mensagem na gui
$Checkbox_tudo = GUICtrlCreateCheckbox("Listar todos os arquivos encontrados nas pastas e sub-pastas.", 8, 137, 313, 17); caixa opcional
$Checkbox_extensao = GUICtrlCreateCheckbox("Listar somente arquivos que tiverem a extensão:", 8, 73, 249, 17); caixa opcional
$Checkbox_arq = GUICtrlCreateCheckbox("Pesquisar e listar arquivos  com o nome:", 8, 106, 209, 17); caixa opcional
$input_extensao = GUICtrlCreateInput("", 259, 70, 62, 21); campo editável
$input_origem = GUICtrlCreateInput("", 8, 32, 257, 21); campo editável
$Input_arq = GUICtrlCreateInput("", 219, 103, 102, 21); campo editável
$procurar = GUICtrlCreateButton("Procurar", 264, 30, 57, 25); botão
$iniciar = GUICtrlCreateButton("Iniciar", 267, 166, 57, 25); botão
GUICtrlSetFont(-1, 9, 400, 0, "Arial Black"); estilo da letra
$Button_sair = GUICtrlCreateButton("Sair", 195, 166, 57, 25); botão
GUICtrlSetFont(-1, 9, 400, 0, "Arial Black"); estilo da letra
GUISetState(@SW_SHOW, "Pesquisador.exe   belini@ymail.com"); mostra a gui
#endregion ### END Koda GUI section ###
GUICtrlSetData($input_origem, $INI_diretorio); pega o caminho no arquivo .ini
While 1
  $nMsg = GUIGetMsg()
  Switch $nMsg
   Case $GUI_EVENT_CLOSE
    Exit ;encerra o script
   Case $Button_sair; caso este botão seja pressionado
    Exit ;encerra o script
   Case $procurar; procura o caminho
    $pastas = FileSelectFolder("procurando", ''); navega fazendo a procura
    If Not @error Then GUICtrlSetData($input_origem, $pastas); armazena o caminho escolhido
   Case $Checkbox_tudo
    GUICtrlSetState($Checkbox_extensao, $GUI_UNCHECKED); desmarca a opção
    GUICtrlSetState($Checkbox_arq, $GUI_UNCHECKED); desmarca a opção
   Case $Checkbox_extensao; caso a opção seja marcada
    GUICtrlSetState($Checkbox_arq, $GUI_UNCHECKED); desmarca a opção
    GUICtrlSetState($Checkbox_tudo, $GUI_UNCHECKED); desmarca a opção
    $opcao_extensao = GUICtrlRead($Checkbox_extensao); verifica se esta marcada
    $extensao = GUICtrlRead($input_extensao); pega as informações
    $conta_letras = StringLen($extensao); pega o número de letras
    If $opcao_extensao = 1 And $conta_letras = 0 Then; se esta marcada e não digitou nada
     MsgBox("ERRO", "", "Digite a extensão que quer listar e pressione o botão iniciar."); mostra a mensagem
    EndIf
   Case $Checkbox_arq; caso a opção seja marcada
    GUICtrlSetState($Checkbox_extensao, $GUI_UNCHECKED); desmarca a opção
    GUICtrlSetState($Checkbox_tudo, $GUI_UNCHECKED); desmarca a opção
    $opcao_arq = GUICtrlRead($Checkbox_arq); verifica se esta marcada
    $arquivo = GUICtrlRead($Input_arq); pega as informações
    $conta_letra = StringLen($arquivo); pega o número de letras
    If $opcao_arq = 1 And $conta_letra = 0 Then; se esta marcada e não digitou nada
     MsgBox("ERRO", "", "Digite o nome ou parte do nome do arquivo que vai procurar e clique em botão iniciar."); mostra a mensagem
    EndIf
   Case $iniciar; caso este botão seja pressionado
    $opcao_tudo = GUICtrlRead($Checkbox_tudo); verifica o estado
    $opcao_extensao = GUICtrlRead($Checkbox_extensao); verifica o estado
    $opcao_arq = GUICtrlRead($Checkbox_arq); verifica o estado
    $caminho = GUICtrlRead($input_origem); pega as informações
    $extensao = GUICtrlRead($input_extensao); pega as informações
    $proc_arquivo = GUICtrlRead($Input_arq); pega as informações
    $conta_letra = StringLen($proc_arquivo); pega o número de letras
    $conta_letras = StringLen($extensao); pega o número de letras
    $soma = $opcao_tudo + $opcao_extensao + $opcao_arq
    $tudo_ok = 1; define o valor "1" para variável
    If $soma = 12 Then
     MsgBox("ERRO", "", "Nenhuma opção foi marcada, escolha uma opção e aperte iniciar."); mostra a mensagem
     $tudo_ok = 0; define o valor "0" para variável
    EndIf
    If Not FileExists($caminho) Then; se não existir caminho mostra mensagem de erro
     MsgBox("ERRO", "", "Indique um caminho válido para fazer pesquisa dos arquivos."); mostra a mensagem
     GUICtrlSetData($input_origem, ""); campo editável
     $tudo_ok = 0; define o valor "0" para variável
    EndIf
    If $conta_letras <> 0 And $opcao_extensao = 4 Then; se não existir caminho mostra mensagem de erro
     MsgBox("ERRO", "", "Marque a opção de arquivos da extensão e digite novamente a extensão que vai procurar."); mostra a mensagem
     GUICtrlSetData($input_extensao, ""); campo editável
     $conta_letras = 0; define o valor "0" para variável
     $tudo_ok = 0; define o valor "0" para variável
    EndIf
    If $conta_letras <> 0 And $opcao_extensao = 1 Then; se foi digitada uma extensão executa
     $procura_ponto = StringInStr($extensao, ".", 2, 1); procura pelo ponto no início
     $retira_ponto = StringTrimLeft($extensao, $procura_ponto); retira o ponto se tiver sido digitado
     $ext_definida = $retira_ponto; deixa apenas a extensão sem o ponto
    EndIf
    If $conta_letra <> 0 And $opcao_arq = 4 Then; se não existir caminho mostra mensagem de erro
     MsgBox("ERRO", "", "Marque a opção para procurar arquivos e digite novamente o nome do arquivo que vai procurar."); mostra a mensagem
     GUICtrlSetData($Input_arq, ""); campo editável
     $conta_letra = 0; define o valor "0" para variável
     $tudo_ok = 0; define o valor "0" para variável
    EndIf
    If $tudo_ok = 1 Then; se estiver tudo ok fecha a gui e continua
     GUISetState(@SW_HIDE, "Pesquisador.exe  belini@ymail.com"); oculta a gui
     executar_funcoes(); chama a função
     ExitLoop
    EndIf
  EndSwitch
WEnd
EndFunc   ;==>gui_principal
Func executar_funcoes()
Local $pergunta = 0, $faz_pergunta = 0, $arq_listar = 0, $arq_procurar = 0, $conta_extensao = 0, $conta_todos = 0 ; variáveis locais
IniWrite(@ScriptDir & 'Configurações.ini', 'Endereço do diretório', 'caminho', $caminho); grava o novo caminho
If FileExists(".Arquivos listados.ini") Then $arq_listar = 1 ; se o arquivo já existir executa
If FileExists(".Arquivo procurado.ini") Then $arq_procurar = 1 ; se o arquivo já existir executa
If $opcao_tudo = 1 Or $opcao_extensao = 1 And $arq_listar = 1 Then $faz_pergunta = 1; muda o estado da variável
If $arq_procurar = 1 And $opcao_arq = 1 Then $faz_pergunta = 1; muda o estado da variável
If $faz_pergunta = 1 Then
  $Form1 = GUICreate("                          Escolha uma opção:", 604, 91, 336, 260); cria a gui
  GUICtrlCreateLabel("Já existe uma lista com este nome escolha uma opção para continuar.", 8, 10, 592, 28); mensagem na gui
  GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif"); fonte usada
  $Button1 = GUICtrlCreateButton("Continuar na mesma lista", 10, 45, 185, 32); botão
  GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif"); fonte usada
  $Button2 = GUICtrlCreateButton("Manter antiga e criar outra", 207, 45, 190, 32); botão
  GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif"); fonte usada
  $Button3 = GUICtrlCreateButton("Deletar e criar outra lista", 408, 45, 185, 32); botão
  GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif"); fonte usada
  GUISetState(@SW_SHOW); mostra a gui
  While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
    Case $Button1; caso este botão seja pressionado
     $pergunta = 1; define o valor "1" para variável
     GUISetState(@SW_HIDE); caso este botão seja pressionado
     GUIDelete(); deleta a gui
     ExitLoop; sai do loop
    Case $Button2; caso este botão seja pressionado
     $pergunta = 2; define o valor "2" para variável
     GUISetState(@SW_HIDE); caso este botão seja pressionado
     GUIDelete(); deleta a gui
     ExitLoop; sai do loop
    Case $Button3; caso este botão seja pressionado
     $pergunta = 3; define o valor "3" para variável
     GUISetState(@SW_HIDE); caso este botão seja pressionado
     GUIDelete(); deleta a gui
     ExitLoop; sai do loop
   EndSwitch
  WEnd
EndIf
If $pergunta = 1 And $arq_listar = 1 Then; se o valor da variável for "1" executa
  $ultimo_numero = IniRead(".Arquivos listados.ini", "Arquivos listados:", "Total de arquivos listados", ""); Faz a leitura
  $ultimo_tamanho = IniRead(".Arquivos listados.ini", "Arquivos listados:", "Tamanho em Gigabytes dos arquivos listados", "") ; grava no arquivo
  IniDelete(".Arquivos listados.ini", "Arquivos listados:", "//"); apaga esta linha
  IniDelete(".Arquivos listados.ini", "Arquivos listados:", "Total de arquivos listados"); apaga esta linha
  IniDelete(".Arquivos listados.ini", "Arquivos listados:", ""); apaga esta linha
  $contando_arquivo = $ultimo_numero; inicia o contador com o último número gravado no arquivo ini
  $tamanho_arquivos = $ultimo_tamanho * 1073741824; converte o valor que esta em gigabytes
EndIf
If $pergunta = 2 And $arq_listar = 1 Then; se o valor da variável for "2" executa
  FileMove(".Arquivos listados.ini", ".Arquivos listados (antiga).ini", 1); a lista passa a ser a lista antiga
  $mostra_lista = ""
EndIf
If $pergunta = 3 And $arq_listar = 1 Then; se o valor da variável for "3" executa
  FileDelete(".Arquivos listados.ini"); deleta o arquivo
  $mostra_lista = ""
EndIf

If $opcao_tudo = 1 Or $opcao_extensao = 1 And Not FileExists(".Arquivos listados.ini") Then; se o arquivo não existir executa
  FileWriteLine(".Arquivos listados.ini", "==============================================================================" & _
    @CRLF & "                          [Arquivos listados:]" & _
    @CRLF & "==============================================================================" & _
    @CRLF & "             Tamanho em Gigabytes dos arquivos listados = " & _
    @CRLF & "=============================================================================="); grava no arquivo
EndIf
If $opcao_tudo = 1 Or $opcao_extensao = 1 Then
  SplashTextOn("Listando", "Criando lista aguarde...", 270, 52, -1, -1, 1, "", 18); mostra uma mensagem
  $tempo_inicio = TimerInit(); inicia a contagem do tempo
  procurar()
  SplashOff(); fecha a janela da mensagem
  If $contando_arquivo = 0 And $conta_extensao = 0 Then
   MsgBox(0, "ERRO.", "Não foi encontrado nenhum arquivo com a extensão escolhida"); mensagem box
  EndIf
  FileWrite(".Arquivos listados.ini", $Faz_lista); grava tudo o que estiver na variável
  $converte_tamanho = $tamanho_arquivos / 1073741824; converte para gigabytes
  $pega_letras = StringInStr($converte_tamanho, ".", 2, 1); pega o número de letras ate o ponto
  $grava_tamanho = StringMid($converte_tamanho, 1, $pega_letras + 3); deixa apenas 3 casas após o ponto
  IniWrite(".Arquivos listados.ini", "Arquivos listados:", "Tamanho em Gigabytes dos arquivos listados", $grava_tamanho) ; grava no arquivo o tamanho totral dos as arquivos
  FileWriteLine(".Arquivos listados.ini", "//==========================================================================" & _
    @CRLF & "                   Total de arquivos listados = " & $contando_arquivo & _
    @CRLF & "==========================================================================//"); grava no arquivo
EndIf
If $pergunta = 1 And $arq_procurar = 1 Then; se o valor da variável for "1" executa
  $ultimo_arquivo = IniRead(".Arquivo procurado.ini", "Arquivos listados:", "Total de arquivos listados", ""); Faz a leitura
  $ultimo_tamanho_2 = IniRead("..Arquivo procurado.ini", "Arquivos listados:", "Tamanho em Gigabytes dos arquivos listados", "") ; grava no arquivo
  IniDelete(".Arquivo procurado.ini", "Arquivos listados:", "//"); apaga esta linha
  IniDelete(".Arquivo procurado.ini", "Arquivos listados:", "Total de arquivos listados"); apaga esta linha
  IniDelete(".Arquivo procurado.ini", "Arquivos listados:", ""); apaga esta linha
  $conta_arquivo = $ultimo_arquivo; inicia o contador com o último número gravado no arquivo ini
  $tamanho_arquivos_2 = $ultimo_tamanho_2 * 1073741824; converte o valor que esta em gigabytes
EndIf
If $pergunta = 2 And $arq_procurar = 1 Then; se o valor da variável for "2" executa
  FileMove(".Arquivo procurado.ini", ".Arquivo procurado (antiga).ini", 1); a lista passa a ser a lista antiga
  $mostra_lista = ""
EndIf
If $pergunta = 3 And $arq_procurar = 1 Then; se o valor da variável for "3" executa
  FileDelete(".Arquivo procurado.ini"); deleta o arquivo
  $mostra_lista = ""
EndIf
If $opcao_arq = 1 And Not FileExists(".Arquivo procurado.ini") Then; se o arquivo não existir executa
  FileWriteLine(".Arquivo procurado.ini", "==============================================================================" & _
    @CRLF & "                          [Arquivos listados:]" & _
    @CRLF & "==============================================================================" & _
    @CRLF & "             Tamanho em Gigabytes dos arquivos listados = " & _
    @CRLF & "=============================================================================="); grava no arquivo
EndIf
If $opcao_arq = 1 Then
  SplashTextOn("Procurando", "Procurando arquivos aguarde...", 270, 52, -1, -1, 1, "", 18); mostra uma mensagem
  $tempo_inicio = TimerInit(); inicia a contagem do tempo
  procura_nome()
  SplashOff(); fecha a janela da mensagem
  If $conta_arquivo = 0 Then
   MsgBox(0, "ERRO.", "Não foi encontrado com o nome que foi digitado"); mensagem box
  EndIf
  FileWrite(".Arquivo procurado.ini", $Faz_lista_2 & @CRLF); grava tudo o que estiver na variável
  $converte_tamanho_2 = $tamanho_arquivos_2 / 1073741824; converte para gigabytes
  $pega_letras_2 = StringInStr($converte_tamanho_2, ".", 2, 1); pega o número de letras ate o ponto
  $grava_tamanho_2 = StringMid($converte_tamanho_2, 1, $pega_letras_2 + 3); deixa apenas 3 casas após o ponto
  IniWrite(".Arquivo procurado.ini", "Arquivos listados:", "Tamanho em Gigabytes dos arquivos listados", $grava_tamanho_2) ; grava no arquivo o tamanho totral dos as arquivos
  FileWriteLine(".Arquivo procurado.ini", "//==========================================================================" & _
    @CRLF & "                   Total de arquivos listados = " & $conta_arquivo & _
    @CRLF & "==========================================================================//"); grava no arquivo
EndIf
$tempo_total = TimerDiff($tempo_inicio); pega a diferença do tempo inicial para o tempo final
$temporizador = "00:00:00"; formato do display
$horas = Int($tempo_total / 3600000); converte o valor em horas
$minutos = Int(Mod($tempo_total, 3600000) / 60000); converte o valor em minutos
$segundos = Int(Mod(Mod($tempo_total, 3600000), 60000) / 1000); converte o valor em segundos
$display = StringFormat("%02d:%02d:%02d", $horas, $minutos, $segundos); informações que serão mostradas no display
TrayTip("Finalizado: ", "A lista dos arquivos foi criada.", 1, 0); mensagem num balão
SplashOff()
If $opcao_extensao = 1 Then $conta_extensao = $contando_arquivo; vai procurar e listar somente da mesma extensão
If $opcao_tudo = 1 Then $conta_todos = $contando_arquivo; vai procurar e listar qualquer arquivo
If $opcao_tudo = 1 Or $opcao_extensao = 1 Then
  $size = $grava_tamanho
Else
  $size = $grava_tamanho_2
EndIf
MsgBox(0, "Listagem  completada!", "Tempo gasto para criar a lista = " & $display & _
   @CRLF & @CRLF & "Arquivos com nome escolhido: " & $conta_arquivo & " Arq." & _
   @CRLF & @CRLF & "Arquivos de extensão específica: " & $conta_extensao & " Arq." & _
   @CRLF & @CRLF & "Arquivos de todas as extensões: " & $conta_todos & " Arq." & _
   @CRLF & @CRLF & "Tamanho em disco: " & $size & " Gb"); mensagem box
; reinicia as variáveis para iniciar nova procura
GUICtrlSetState($Checkbox_extensao, $GUI_UNCHECKED)
GUICtrlSetState($Checkbox_arq, $GUI_UNCHECKED)
GUICtrlSetState($Checkbox_tudo, $GUI_UNCHECKED)
GUICtrlSetData($input_extensao, "")
GUICtrlSetData($Input_arq, "")
$tamanho_arquivos_2 = 0
$tamanho_arquivos = 0
$contando_arquivo = 0
$conta_extensao = 0
$conta_arquivo = 0
$grava_tamanho = 0
$opcao_tudo = 0
$Faz_lista_2 = ""
$Faz_lista = ""
mostra_janela()
EndFunc   ;==>executar_funcoes
Func mostra_janela()
Local $minhalista, $lista = 1
If $contando_arquivo > 0 Then $total_arquivos = $contando_arquivo
If $conta_arquivo > 0 Then $total_arquivos = $conta_arquivo
GUICreate("Lista dos arquivos encontrados:", 597, 485, 361, 127)
$minhalista = GUICtrlCreateList("", 10, 10, 578, 422,0x00200000,0x00000100)
GUICtrlSetData(-1, $mostra_lista)
$Button_achar = GUICtrlCreateButton("Ir para o endereço do arquivo", 11, 446, 195, 25)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
$Button_1_arq = GUICtrlCreateButton("Copiar e gravar endereço", 210, 446, 195, 25)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
$Button_fechar= GUICtrlCreateButton("Fechar a janela", 409, 446, 180, 25)
GUICtrlSetFont(-1, 9, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW, "Lista dos arquivos encontrados.")
While $lista
  $nMsg = GUIGetMsg()
  $leitura_arquivo = GUICtrlRead($minhalista); pega as informações
  Switch $nMsg
   Case $GUI_EVENT_CLOSE
    GUIDelete("Lista dos arquivos encontrados.")
    $lista = 0
    gui_principal()
   Case $Button_fechar
    GUIDelete("Lista dos arquivos encontrados.")
    $lista = 0
    gui_principal()
   Case $Button_achar
    $endereco = StringMid($leitura_arquivo, 1, StringInStr($leitura_arquivo, "", 2, -1))
    ShellExecute($endereco)
    GUICtrlSetData($Button_achar, "Localizando o arquivo")
    GUICtrlSetState($Button_achar, $GUI_DISABLE)
    Sleep(1000)
    GUICtrlSetData($Button_achar, "Ir para o endereço do arquivo")
    GUICtrlSetState($Button_achar, $GUI_ENABLE)
   Case $Button_1_arq
    $numera += 1
    GUICtrlSetState($Button_1_arq, $GUI_DISABLE)
    GUICtrlSetData($Button_1_arq, "Copiando e gravando na lista.")
    FileCopy($leitura_arquivo,@ScriptDir,1)
    FileWriteLine(".Arquivos escolhidos.ini", $numera & " = " & $leitura_arquivo)
    GUICtrlSetData($Button_1_arq, "Copiar e gravar endereço")
    GUICtrlSetState($Button_1_arq, $GUI_ENABLE)
  EndSwitch
WEnd
EndFunc   ;==>mostra_janela
Func procurar()
$caminho &= ''; coloca uma barrra no final
$Faz_lista = StringTrimRight(procura_tudo($caminho), 2); lista dos arquivos
Return $Faz_lista; retorna a informação
EndFunc   ;==>procurar
Func procura_tudo($caminho, $contador = 0)
Local $Faz_lista = '', $arquivo, $procura = FileFindFirstFile($caminho & '*'); variáveis locais
If $procura = -1 Then Return ''; se não encontrou arquivo retorna
While 1; rotina de loop
  $arquivo = FileFindNextFile($procura); procura o próximo arquivo
  If @error Then ExitLoop; se der erro sai do loop
  If @extended Then; se encontra arquivo
   If $contador >= 10 Then ContinueLoop; se for igual ou maior que 10 continua
   $Faz_lista &= procura_tudo($caminho & $arquivo & '', $contador + 1); chama a função novamente
  Else; se for menor que 10 executa
   If $opcao_extensao = 1 Then; se foi digitada uma extensão executa
    $pega_ate_extensao = StringInStr($arquivo, ".", 2, 1); procura pelo ponto no início
    $tira_o_ponto = StringTrimLeft($arquivo, $pega_ate_extensao); retira o ponto se tiver sido digitado
    $extensao_arquivo = $tira_o_ponto; deixa apenas a extensão sem o ponto
    If $extensao_arquivo = $ext_definida Then; se a extensão do arquivo for igual a extensão escolhida
     $pega_tamanho = FileGetSize($caminho & $arquivo); pega o tamanho do arquivo
     $tamanho_arquivos += $pega_tamanho; soma o tamanho dos arquivos encontrados
     $contando_arquivo += 1; aumenta 1 no contador
     $Faz_lista &= $contando_arquivo & " = " & $caminho & $arquivo & @CRLF; cria a linha que será gravada
     $mostra_lista &= $caminho & $arquivo & "|"; cria a linha que será gravada
    EndIf
   EndIf
   If $opcao_tudo = 1 Then ; define o valor "0' para variável = 1 then ; lista qualquer extensão se a variável não for = 1
    $contando_arquivo += 1; aumenta 1 no contador
    $pega_tamanho = FileGetSize($caminho & $arquivo); pega o tamanho do arquivo
    $tamanho_arquivos += $pega_tamanho; soma o tamanho dos arquivos encontrados
    $Faz_lista &= $contando_arquivo & " = " & $caminho & $arquivo & @CRLF; cria a linha que será gravada
    $mostra_lista &= $caminho & $arquivo & "|"; cria a linha que será gravada
   EndIf
  EndIf
WEnd
FileClose($procura); encerra a procura
Return $Faz_lista; retorna a informação
EndFunc   ;==>procura_tudo
Func procura_nome()
$caminho &= ''; coloca uma barrra no final
$Faz_lista_2 = StringTrimRight(procura_arq($caminho), 2); lista dos arquivos
Return $Faz_lista_2; retorna a informação
EndFunc   ;==>procura_nome
Func procura_arq($caminho, $contador_2 = 0)
Local $Faz_lista_2 = '', $arquivo_2, $procura_2 = FileFindFirstFile($caminho & '*'); variáveis locais
If $procura_2 = -1 Then Return ''; se não encontrou arquivo retorna
While 1; rotina de loop
  $arquivo_2 = FileFindNextFile($procura_2); procura o próximo arquivo
  If @error Then ExitLoop; se der erro sai do loop
  If @extended Then; se encontra arquivo
   If $contador_2 >= 10 Then ContinueLoop; se for igual ou maior que 10 continua
   $Faz_lista_2 &= procura_arq($caminho & $arquivo_2 & '', $contador_2 + 1); chama a função novamente
  Else; se for menor que 10 executa
   $compara_nome = StringInStr($arquivo_2, $proc_arquivo, 2); verifica se o arquivo tem o que foi digitado no seu nome
   If $compara_nome <> 0 Then
    $conta_arquivo += 1
    $pega_tamanho_2 = FileGetSize($caminho & $arquivo_2); pega o tamanho do arquivo
    $tamanho_arquivos_2 += $pega_tamanho_2; soma o tamanho dos arquivos encontrados
    $Faz_lista_2 &= $conta_arquivo & " = " & $caminho & $arquivo_2 & @CRLF; cria a linha que será gravada
    $mostra_lista &= $caminho & $arquivo_2 & "|"; cria a linha que será gravada
   EndIf
  EndIf
WEnd
FileClose($procura_2); encerra a procura
Return $Faz_lista_2; retorna a informação
EndFunc   ;==>procura_arq
Func _sair()
Exit; encerra o script
EndFunc   ;==>_sair

Share this post


Link to post
Share on other sites
MariusN

Can someone tell me what i'm doing wrong here...or cant this type of script simply not do it?

@Belini...thx, but i wont even TRY it...looks like "Greek" to me :oops:

Here is a little "check"- script...to get my functions etc right bit doesnt work ( PS: i'm not so familliar with Array's...so i'm sticking to the basic...)

Local $sSourceFolder, $read1
Local $sFile, $main1, $main2, $main1a, $main2a

$sSourceFolder = FileSelectFolder("Copy From ...", @HomeDrive, 2)
$read1 = "explorer.exe"
$main1 = StringTrimRight($read1, 1)
_loop($sSourceFolder)
Func _loop($sSourceFolder)
; Force a trailing 
If StringRight($sSourceFolder, 1) <> "" Then $sSourceFolder &= ""
; Start the search
Local $hSearch = FileFindFirstFile($sSourceFolder & "*.*")
; If no files found then return
If $hSearch = -1 Then Return ; This is where we break the recursive loop <<<<<<<<<<<<<<<<<<<<<<<<<<
; Now run through the contents of the folder
While 1
  ; Get next match
  $sFile = FileFindNextFile($hSearch)
  $main2 = StringTrimRight($sFile, 1)
  If $sFile = @error Then ExitLoop
  If $sFile = @extended Then
   _loop($sSourceFolder & $sFile)
  Else
   If StringCompare($main1, $main2, 0) Then
    MsgBox(0, "Second Box", $main2)
   EndIf
   If StringInStr($main1, $main2, 0) Then
    MsgBox(0, "thisrd Box", $main2)
   EndIf
  EndIf
WEnd
; Close search handle
FileClose($hSearch)
EndFunc   ;==>_loop

I need to compare 2 lines...and IF result = 1, then it must give me a message box...If you motice, i got "explorer.exe" in the script, then trimmed it once from the right hand side...search for an equivalent that i ALSO trimmed from the right-hand side...but it doesn't seem to compare ( although in my messagebox2 it shows the files )

Edited by MariusN

Share this post


Link to post
Share on other sites
Melba23

MariusN,

Could you please explain exactly what it is you are trying to do? I hate debugging FileFindFirst/NextFile recursion - which is I wrote the RecFileListToArray UDF to which guinness pointed you. It will easily find files in a path that match a pattern - which is what you seem to be trying to do. :bye:

If we knew a bit more about the purpose of the script we might be able to help you better. :oops:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
guinness

looks like "Greek" to me...

Kind of the same feeling when I looked at your code, why not use the UDF as it's clean and works, then I can help you. Edited by guinness

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
MariusN

There was no offence intended guiness....but when i saw the language, i was scared it's some sort of VIRUS or something...

Share this post


Link to post
Share on other sites
Reg2Post

If you are still trying to acheive your goal in your original post then you will definately benefit from using arrays with loops and not just loops.

I kind of get what you are trying to do with removing the last character on a filename and adding the "" but I think you are trying to be too inventive.

If the "i386" folder you are looking to search in has a constant amount of subfolders you may be able to use just loops. Otherwise, your script will not be able to tell how many levels of subfolders to look into without even a simple array to store the elements.

  • Like 1

Share this post


Link to post
Share on other sites
MariusN

MariusN,

Could you please explain exactly what it is you are trying to do? I hate debugging FileFindFirst/NextFile recursion - which is I wrote the RecFileListToArray UDF to which guinness pointed you. It will easily find files in a path that match a pattern - which is what you seem to be trying to do. :bye:

If we knew a bit more about the purpose of the script we might be able to help you better. :oops:

M23

Hi Melba...i was thinking that maybe i used my "file-comparison" wrong. Thing is, my utility is already completed, works like a charm...but then i noticed it didnt search "within" directories. I was making a PE-Disk with this utility embedded...What it "basically" does is, lets say a virus damaged/replaced one of your system-files...You use this utility that will "replace" the files infected/changed...

1) a Gui will open with 2 "GUICtrlCreateInput" locations

2) you click on the first button that will guide you to the infected file via the "FileSelectFolder"-function

and guide it to the infected file

3) after clicking on the infected file, you click the 2nd button and guide it to wherever your i386-folder resides

4) You then click on the GO-button ( the 3rd button on the Gui )...THIS button (no 3 ) is suppose to search the directory that you chose in button 2 and find any "matching" files...

What i have done is, gave the command that finds the string a "stringtrimright" command/function because most of the files on a cd has a "_" as the 3rd letter after the "dot".

What NOW happens is, the 2 files ( infected AND latter ) must "match" ( more or less )....a Popup will be visible and ask you is you want to "replace"...IF the file matched is NOT the correct one, you choose "next" ( another button on my utility ), and it will search for the next available choice...

Share this post


Link to post
Share on other sites
Reg2Post

I find flaws in your explaination unless you really do not know anything about "PE" and Windows OS.

Your code kind of proved it by resembling what you claim to be combating.

Just my $0.02 before I can get an explaination of how this will repair an infected Win OS.

Share this post


Link to post
Share on other sites
MariusN

I find flaws in your explaination unless you really do not know anything about "PE" and Windows OS.

Your code kind of proved it by resembling what you claim to be combating.

Just my $0.02 before I can get an explaination of how this will repair an infected Win OS.

Not COMPLETELY finished....this is just ONE module...the complete program ( that does the job) has all the functions already in it ;-)

Share this post


Link to post
Share on other sites
MariusN

i compile my own boot/live cd's...have been doing computers for 22 years...( maybe longer than you are old )

If you put one and one together, youll relize i'm still busy with it as well...why do you think i'm asking questions?

Share this post


Link to post
Share on other sites
Reg2Post

I am still not convinced. Your "complete program" has all the "functions already in it" to repair "viruses" yet you know little if not anything about arrays?

Share this post


Link to post
Share on other sites
MariusN

I am still not convinced. Your "complete program" has all the "functions already in it" to repair "viruses" yet you know little if not anything about arrays?

Ive wrote plenty of utilities...you dont really need arrays if you know what youre doing...( now i'm talking of what i know WITHOUT using arrays ). Ive also compiled programs to do "remote connections" to other pc's on the net...and allow you to repair them...so PLEASE fella...Arrays aint EVERYTHING!

( and i also admit i'm not a programmer....)

Edited by MariusN

Share this post


Link to post
Share on other sites
Reg2Post

Sorry, don't need the passive aggressiveness because your "maybe" is the key word here for me.

I don't quite get what you mean when you say "doing computers for 22 years" other than you are trying to hide something.

Seems like you are the young one thinking your plan was going so well and then someone ruined it for you.

Also, let's calm down a little. You are not helping your case by being so aggressive. I never said arrays are everything and I only pointed it out because if you had 22 years of experience with computers you must of focused on the h/w side which further adds to my point that you don't make any sense.

Like I stated, I will continue to think what I am until I get an explanation of how this app will fight viruses in a PE. You stated you are not a programmer.

Share this post


Link to post
Share on other sites
MariusN

Sorry, don't need the passive aggressiveness because your "maybe" is the key word here for me.

I don't quite get what you mean when you say "doing computers for 22 years" other than you are trying to hide something.

Seems like you are the young one thinking your plan was going so well and then someone ruined it for you.

Also, let's calm down a little. You are not helping your case by being so aggressive. I never said arrays are everything and I only pointed it out because if you had 22 years of experience with computers you must of focused on the h/w side which further adds to my point that you don't make any sense.

Like I stated, I will continue to think what I am until I get an explanation of how this app will fight viruses in a PE. You stated you are not a programmer.

Mind if we stay by the topic? I came here for suggestions....nor to know how "clever" you are :oops:

Share this post


Link to post
Share on other sites
Reg2Post

I don't mind staying on topic. I was here (this post) to help you and any others with a complex search function and logic because I already wrote code to do what you are looking to do. But I will not assist if your help request is something that is not allowed in the forums.

Share this post


Link to post
Share on other sites
MariusN

I don't mind staying on topic. I was here (this post) to help you and any others with a complex search function and logic because I already wrote code to do what you are looking to do. But I will not assist if your help request is something that is not allowed in the forums.

If i offended...i appologise...Its the way you talk about "youre not convinced" that "pi**ed" me of as i dont need to convince anyone...I'm merely here for advice...and to learn more...so yes...if i offend...i appologise :oops:

Share this post


Link to post
Share on other sites
Reg2Post

I'm not offended. Thanks for the apology, though.

And I apologize if I offend or offended you but I disagree with your comment about not having to convince anyone. Because in actuallity, you do, whether it be implied or inferred.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×