Как мне эмулировать команду xcopy в Perl?

Perl для меня новый язык. Я писал пакетные файлы. У меня есть сценарий, который я написал в виде пакетного файла, который я пытаюсь преобразовать в Perl. Это мой пакетный файл:

    @echo off
    :LOOP
    echo File Copy Started 
    xcopy /s /Y  "Source" "Destination"
    echo File Copy Completed 
    TIMEOUT /T 80
    goto :LOOP

Итак, я пытаюсь выяснить, есть ли в Perl команда, похожая на xcopy, или мне нужно найти какой-то другой способ создать ту же функцию в Pearl. Любая помощь будет отличной. Спасибо.


person Nightzrain    schedule 03.01.2013    source источник
comment
xcopy состоит из тысяч и тысяч строк. Мы не собираемся публиковать это, хотя мы можем сделать что-то примерно похожее гораздо меньше. (Для начала он, вероятно, не будет обрабатывать разрешения атрибутов так же хорошо, как xcopy.) Вам потребуется получить список файлов, возможно, используя File::Find::Rule, затем скопируйте их, возможно, используя Файл::Копировать   -  person ikegami    schedule 03.01.2013
comment
Возможно, вы просите эквивалент программы, которую вы фактически разместили (пакетный файл)?   -  person ikegami    schedule 03.01.2013
comment
xcopy /s без /e странно.   -  person ikegami    schedule 03.01.2013
comment
Нет, я не ищу эквивалент программы, я просто ищу отправную точку для эмуляции функции xcopy. Я очень новичок в использовании Perl. Я привык к пакетным файлам. Спасибо, ikegami, я поищу File::Fine::Rule и File::Copy. :) Я думаю, что это может помочь.   -  person Nightzrain    schedule 04.01.2013
comment
возможный дубликат Как я могу рекурсивно скопировать содержимое каталога с помощью Perl?   -  person Ilmari Karonen    schedule 04.01.2013
comment
И, как рекомендует главный ответ на этот вопрос, посмотрите File::Copy::Recursive.   -  person uptownnickbrown    schedule 04.01.2013


Ответы (2)


Как отмечает Икегами в комментариях, нет единой команды Perl, которая делала бы то, что делает xcopy. Хотя вы могли бы написать код для повторной реализации рекурсивного копирования файлов в Perl (например, используя File::Find или File::Find:: Rule и File::Copy как предложено), более простое решение можно просто вызвать xcopy из Perl, используя system:

system qw(xcopy /s /Y), $source, $destination;

Редактировать: Или просто используйте File::Copy: :Рекурсивный из CPAN.

person Ilmari Karonen    schedule 03.01.2013

Вот это,

Вы можете использовать их для реализации самостоятельно, однако, будучи новичком в языке, это может быть полезно:

system qw(xcopy /s /Y), $source, $destination;

Однако, если вы пишете код, оптимизированный для производительности, вам не следует использовать это.

person Community    schedule 03.01.2013