Есть ли способ получить прогресс передачи файлов с помощью функции перемещения в сценарии Perl? - PullRequest
3 голосов
/ 18 мая 2009

Я разработчик ETL и имею дело с большим количеством данных, которые необходимо обработать из одной формы в другую, прежде чем их можно будет загрузить в таблицы. Поэтому большинству сценариев, с которыми я работаю, в какой-то момент приходится перемещать файл из одного места в другое. Мы магазин окон. Мне было интересно, есть ли способ узнать, сколько времени занимает перемещение, когда я использую функцию перемещения в Perl. Если мне нужно вызвать команду windows через систему, которая предоставит мне эту опцию, то я тоже могу использовать ее. Есть ли что-нибудь в Perl или командной строке Windows, которая сообщит мне о ходе передачи файла?

Спасибо!

1 Ответ

7 голосов
/ 18 мая 2009

Вы можете использовать пакет Win32 :: FileOp из cpan.

Вот соответствующий отрывок:

CopyConfirm

 CopyConfirm ($FileName => $FileOrDirectoryName [, ...])
 CopyConfirm (\@FileNames => $DirectoryName [, ...] )
 CopyConfirm (\@FileNames => \@FileOrDirectoryNames [, ...])

Копирует указанные файлы. В случае столкновения показывает диалог подтверждения. Показывает прогресс Диалоги.

В случае успеха возвращает true.

MoveConfirm

Перемещает указанные файлы. Параметры как CopyConfirm

Альтернативой командной строки будет Term :: ProgressBar , которая также гораздо более гибкая, но несколько сложнее в настройке. Вам нужно будет сделать что-то вроде: получить исходный размер файла, затем начать копирование и опросить размер нового файла (из дочернего процесса), чтобы обновлять индикатор выполнения.

...