Jump to content

frenovato

Membros
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutro

About frenovato

  • Rank
    Novato

Profile Information

  • Location
    Rio de Janeiro
  1. Boa Tarde. Na busca continua de melhorar processos estou tentando criar uma interface e reduzir o tempo de cópia de pastas nos servidores de arquivos. Usando um processo manual com o CMD e o comando robocopy do Windows consigo copiar arquivos com nomes extensos e acima de 255 caracteres. No processo esbarrei na minha limitação e travei na execução do comando. Alguém teria alguma luz para dar no processo? Segue o que foi feito até o momento. #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <AutoItConstants.au3> #Region ### START Koda GUI section ### Form= Global $origem, $destino, $numera = 0, $txt, $result, $listar Local $_1 = GUICreate("Copiar arquivos", 541, 402, 616, 134) Local $Button_iniciar = GUICtrlCreateButton("Iniciar cópia", 400, 352, 131, 41) GUICtrlSetFont(-1, 10, 800, 0, "Arial") Local $Label2 = GUICtrlCreateLabel(" **Rodar apenas em servidores**", 17, 306, 508, 26, BitOR($SS_CENTERIMAGE,$SS_SUNKEN)) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x000000) Local $Origem_box = GUICtrlCreateGroup("Origem", 8, 8, 393, 81) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") Local $Input_origem = GUICtrlCreateInput("Origem", 24, 40, 259, 24) Local $Button_proc_ori = GUICtrlCreateButton("Selecionar", 309, 38, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) Local $Destino_box = GUICtrlCreateGroup("Destino", 8, 104, 393, 81) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") Local $Input_destino = GUICtrlCreateInput("Destino", 24, 136, 259, 24) Local $Button_proc_dest = GUICtrlCreateButton("Selecionar", 309, 134, 75, 25) GUICtrlCreateGroup("", -99, -99, 1, 1) Local $txt = GUICtrlCreateGroup("Registro de Saída", 8, 208, 393, 81) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") Local $Input_txt = GUICtrlCreateInput("Nome do txt de saída", 24, 240, 259, 24) GUICtrlCreateGroup("", -99, -99, 1, 1) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### Local $sUserName = ;usuário Local $sPassword = ;senha Local $sDomain = ;domínio Local $sCMD = "robocopy" & $Input_origem & $Input_destino & "/E /R:0 /W:0 /V /NP /ETA /LOG+:" & @ScriptDir & $Input_txt & ".txt" Global $prompt = RunAsWait($sUserName, $sDomain, $sPassword, $RUN_LOGON_NOPROFILE, @ComSpec & "/C" & $sCMD) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button_proc_ori $origem = FileSelectFolder("Procurando pasta.", "", "", @ScriptDir) GUICtrlSetData($Input_origem, $origem) Case $Button_proc_dest $destino = FileSelectFolder("Procurando pasta.", "", "", @ScriptDir) GUICtrlSetData($Input_destino, $destino) Case $Button_iniciar $origem = GUICtrlRead($Input_origem) $destino = GUICtrlRead($Input_destino) $txt = GUICtrlRead($Input_txt) SplashTextOn("Copiar:", "Copiando arquivos, aguarde...", 320, 60, -1, -1, 33, "Arial black", 12) If FileExists($origem) >= FileExists($destino) Then $prompt ProcessWaitClose($prompt) If FileExists($destino) Then listar($listar, $destino) If FileExists($origem) = FileExists($destino) Then MsgBox(4096, "Finalizado:", "Foram copiados " & $numera & " arquivos.") $result = StdoutRead(RunAsWait($sUserName, $sDomain, $sPassword, $RUN_LOGON_NOPROFILE, @ComSpec & "/C" & $sCMD)) FileChangeDir(@ScriptFullPath) FileOpen($Input_txt & ".txt", 1) FileWrite($Input_txt & ".txt", $result) FileClose($Input_txt & ".txt") If FileExists(@WorkingDir & $Input_txt & ".txt") Then MsgBox(4096, "Documento de saída criado", "O documento foi " & @WorkingDir & $Input_txt & ".txt com sucesso") If Not FileExists(@WorkingDir & $Input_txt & ".txt") Then MsgBox(4096, "Falha no retorno", "O documento não foi criado com sucesso") Sleep(5000) SplashOff() exit EndSwitch WEnd Func listar(ByRef $listar, $path = "") $counter = 0 $path &= '\' Local $list_files = '', $file, $demand_file = FileFindFirstFile($path & '*') If $demand_file = -1 Then Return '' While 1 $file = FileFindNextFile($demand_file) If @error Then ExitLoop If @extended Then If $counter >= 10 Then ContinueLoop listar($listar, $path & $file) Else If $origem = $destino Then $numera += 1 TrayTip("Listando", $file, 1, 0) IniWrite(@ScriptDir & "\Teste.txt", "Retorno da cópia", $path & $file, StringLen($path & $file) & " linhas") EndIf EndIf WEnd FileClose($demand_file) EndFunc ;==>listar
  2. Boa tarde. Após alguns dias de leitura e descobertas consegui compilar algo que me ajudou e me poupo horas de trabalho. Precisava automatizar a execução de um programa e após a execução dele copiar os arquivos gerados para outra pasta renomeando eles. Sendo que esse determinado programa só roda com credenciais de administrador e por políticas de segurança não executava em todos os usuários. Depois de alguns testes e muita leitura consegui fazer e estou disponibilizando o resultado para contribuir e dar uma luz como me foi dada.
×