Existe uma maneira de obter o progresso de uma transferência de arquivo usando a função de movimento em um script Perl?
-
22-08-2019 - |
Pergunta
Eu sou um desenvolvedor de ETL e eu lidar com uma grande quantidade de dados que precisam ser processados ??de uma forma para a outra antes que possa ser carregado em tabelas. Portanto, a maioria dos scripts que eu trabalho com, em algum momento, tem que mover um arquivo de um lugar para o outro. Somos uma loja de janelas. Eu queria saber se havia uma maneira de ver quanto tempo um movimento toma quando estou usando a função de movimento em Perl. Se eu preciso chamar um comando janelas através do sistema que vai me dar essa opção, então estou ok para usar isso também. Existe alguma coisa em Perl ou janelas comando linha que vai me dizer o progresso da transferência de arquivo?
Obrigado!
Solução
Você pode usar o Win32 :: FileOp pacote do CPAN.
Aqui está um trecho relevante:
CopyConfirm
CopyConfirm ($FileName => $FileOrDirectoryName [, ...]) CopyConfirm (\@FileNames => $DirectoryName [, ...] ) CopyConfirm (\@FileNames => \@FileOrDirectoryNames [, ...])
copia os arquivos especificados. No caso de uma colisão, uma mostra diálogo de confirmação. progresso Shows diálogos.
Retorna verdadeiro caso de sucesso.
MoveConfirm
Move os arquivos especificados. Parâmetros como CopyConfirm
Uma alternativa linha de comando seria Term: : ProgressBar , que também é muito mais flexível, mas um pouco mais difícil de configurar. Você teria que fazer algo como: obter o tamanho do arquivo original, em seguida, iniciar a cópia e tosquia tamanho do novo arquivo (a partir de um processo filho) para dar atualizações para a barra de progresso.