MariusN Posted March 21, 2012 Share Posted March 21, 2012 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" expandcollapse popupFunc _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 Link to comment Share on other sites More sharing options...
guinness Posted March 21, 2012 Share Posted March 21, 2012 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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
MariusN Posted March 21, 2012 Author Share Posted March 21, 2012 Search the forum for RecFileListToArray.au3 by Melba23....thx Melba23 Link to comment Share on other sites More sharing options...
Belini Posted March 21, 2012 Share Posted March 21, 2012 @MariusN See if this script helps you: expandcollapse popup#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 My Codes: Virtual Key Code UDF: http://www.autoitscript.com/forum/topic/138246-virtual-key-code-udf/ GuiSplashTextOn.au3: http://www.autoitscript.com/forum/topic/143542-guisplashtexton-udf/ Menu versions of Autoit: http://www.autoitscript.com/forum/topic/137435-menu-versions-of-autoit/#entry962011 Selects first folder of letters: ]http://www.autoitscript.com/forum/topic/144780-select-folders-by-letter/#entry1021708/spoiler] List files and folders with long addresses.: http://www.autoitscript.com/forum/topic/144910-list-files-and-folders-with-long-addresses/#entry102 2926 Program JUKEBOX made in Autoit:some functions:http://www.youtube.com/watch?v=WJ2tC2fD5Qs Navigation to search:http://www.youtube.com/watch?v=lblwOFIbgtQ Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 (edited) 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 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 March 22, 2012 by MariusN Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 22, 2012 Moderators Share Posted March 22, 2012 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. If we knew a bit more about the purpose of the script we might be able to help you better. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
guinness Posted March 22, 2012 Share Posted March 22, 2012 (edited) 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 March 22, 2012 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 parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 There was no offence intended guiness....but when i saw the language, i was scared it's some sort of VIRUS or something... Link to comment Share on other sites More sharing options...
Reg2Post Posted March 22, 2012 Share Posted March 22, 2012 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. MariusN 1 Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 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. If we knew a bit more about the purpose of the script we might be able to help you better. M23Hi 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" locations2) you click on the first button that will guide you to the infected file via the "FileSelectFolder"-functionand guide it to the infected file3) after clicking on the infected file, you click the 2nd button and guide it to wherever your i386-folder resides4) 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... Link to comment Share on other sites More sharing options...
Reg2Post Posted March 22, 2012 Share Posted March 22, 2012 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. Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 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 ;-) Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 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? Link to comment Share on other sites More sharing options...
Reg2Post Posted March 22, 2012 Share Posted March 22, 2012 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? Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 (edited) 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 March 22, 2012 by MariusN Link to comment Share on other sites More sharing options...
Reg2Post Posted March 22, 2012 Share Posted March 22, 2012 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. Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 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 Link to comment Share on other sites More sharing options...
Reg2Post Posted March 22, 2012 Share Posted March 22, 2012 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. Link to comment Share on other sites More sharing options...
MariusN Posted March 22, 2012 Author Share Posted March 22, 2012 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 Link to comment Share on other sites More sharing options...
Reg2Post Posted March 22, 2012 Share Posted March 22, 2012 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. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now