Як роботокопіювати з прогресом, який увійшов лише до консолі?


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 зараз кілька разів, і не можу знайти потрібний комутатор. Я чогось пропускаю або це те, чого я хочу досягти, неможливо?


Чи потрібно використовувати лише вбудовані інструменти?
Привіт71

Відповіді:


2

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

Якщо ви використовуєте пакетні сценарії, використовувати sed потрібно не дуже складно, щоб вилучити небажану інформацію про хід з файлу журналу. Я недостатньо досвідчений з цим, щоб дати вам рішення, використовуючи його, не витрачаючи на це трохи часу.

Є одна версія файлу .exe sedв UnxUtils (з трохи більш актуальною версією в zip оновлення).

Іншим варіантом буде використання XXCOPY замість Robocopy. Він має справді смішну кількість вимикачів (понад 230), що дозволяє робити все, що завгодно. Вам доведеться провести цілий вечір, обираючи, які саме ви хочете використовувати. У ньому також є діалогове вікно просування графічного інтерфейсу, якщо ви хочете використовувати це.

Існує безкоштовна версія для особистого користування, яка не може бути використана для автоматизованого сценарію, оскільки вам потрібно інтерактивно слідувати підказкам, на відміну від платної версії.

XXCOPY

Ще одна альтернатива - RichCopy , який має графічний інтерфейс, який може використовувати для вибору ваших параметрів. Потім він може дати вам командний рядок операції для використання в пакетних скриптах.

RichCopy


1

Re: роботокопія і зафіксований хід "шум"

Рішення: використовуйте just / 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безпосередньо?
парадороїд

1
Звичайно, ви можете пропустити через sed, що, однак, видалить інформацію про хід з дисплея консолі, а також, можливо, лог-файл ...
Mac

Звичайно, але я подумав, що, можливо, teeкоманду можна використовувати замість /TEEперемикача Robocopy , але я щойно зрозумів, що це частина, TCC/LEа не стандартна CMDкоманда. Він доступний у, PowerShellхоча.
парадороїд

насправді .. він все ще записує безлад прогресу в лог-файл! Тож саме протилежне тому, що потрібно. Я щойно перевірив: робокопію. tst /log:n:\tst.log / tee | sed "s / \ x0d. * \ x0d. * $ //"
Mac

Трійка також доступна від gnuwin32 .. але матиме таку ж проблему;) gnuwin32.sourceforge.net/packages/coreutils.htm
Mac
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.