Как сделать Robocopy с прогрессом, зарегистрированным только на консоли?

8

Я хочу запустить RoboCopy, который обновит консоль с% прогрессом, но не загромождает файл журнала с% прогрессом.

Следующая команда RoboCopy выполнит желаемое копирование и добавит информацию журнала в файл журнала.

RoboCopy <source> <dest> /log+:<log file> /tee

Проблема в том, что файл журнала перегружен% прогресса обновления. Поэтому мне нужно изменить команду на это:

RoboCopy <source> <dest> /log+:<log file> /tee /np

Теперь проблема в том, что я не получаю никаких% обновлений прогресса на экране.

Я прочитал http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx несколько раз и не могу найти нужный мне переключатель. Я что-то упускаю или то, чего я хочу достичь, невозможно?

Тим Мерфи
источник
Вы должны использовать только встроенные инструменты?
Hello71

Ответы:

2

Поскольку никто так долго не отвечал, я решил предложить пару вещей.

Если вы используете пакетные сценарии, не должно быть слишком сложно использовать sed для удаления нежелательной информации о ходе выполнения из файла журнала. Я не достаточно опытен, чтобы дать вам решение, используя его, не затрачивая на это времени.

Существует одна версии .exe файл sedв UnxUtils (с версией чуть более до даты в почтовом обновлении).

Другой вариант будет использовать XXCOPY вместо Robocopy. Он имеет по-настоящему смешное количество переключателей (более 230), что позволяет вам делать все, что вы хотите. Вы должны провести целый вечер, выбирая, какие из них вы хотите использовать. У этого также есть диалоговое окно прогресса GUI, если вы предпочитаете использовать это.

Существует бесплатная версия для личного пользования, которую нельзя использовать для автоматического написания сценариев, так как вам нужно интерактивно следовать подсказкам, в отличие от платной версии.

XXCOPY

Другой альтернативой является RichCopy , который имеет графический интерфейс, который можно использовать для выбора ваших опций. Затем он может дать вам командную строку вашей операции для использования в пакетных сценариях.

RichCopy

Paradroid
источник
1

Re: Robocopy и зарегистрированный прогресс «шум»

Решение: используйте просто / TEE и позвольте ему регистрировать «шум», иначе вы не увидите никакого прогресса. Затем используйте sed, как вначале предложили очистить файл журнала следующим образом:

sed -i.bak "s / \ x0d. * \ x0d. * $ //" logfile.txt

удалите .bak, если вы не хотите нефиксированную резервную копию. sed доступен для окон здесь и отлично работает, по крайней мере, для однострочного использования.

http://gnuwin32.sourceforge.net/packages/sed.htm

* (команды sed в сценариях unix bash / cshell часто располагаются в несколько строк, что повышает гибкость и сложность. Я не ожидаю, что команды такого типа sed будут работать со сценариями Windows cmd, но sed по-прежнему полезна в Windows).

макинтош
источник
+1 Разве нет способа stdoutпройти через него sedнапрямую?
paradroid
1
конечно, вы можете передать через sed, который, однако, удалит информацию о прогрессе с дисплея консоли, а также, возможно, из файла журнала ...
Mac
Конечно, но я подумал, что, возможно, teeкоманда может использоваться вместо /TEEпереключателя Robocopy , но я только что понял, что это часть, TCC/LEа не стандартная CMDкоманда. Это доступно в PowerShellхотя.
парадоид
на самом деле .. он все еще записывает беспорядок прогресса в лог-файл! Так что полная противоположность того, что нужно. Я только что проверил: robocopy. tst /log:n:\tst.log / tee | sed "s / \ x0d. * \ x0d. * $ //"
Mac
ти также доступна от gnuwin32 .. но будет иметь ту же проблему;) gnuwin32.sourceforge.net/packages/coreutils.htm
Mac