Избегать существующих сведений о файле папки назначения в журнале Robocopy - программирование
Подтвердить что ты не робот

Избегать существующих сведений о файле папки назначения в журнале Robocopy

Я хотел бы избежать всех существующих имен файлов и деталей папки назначения при использовании журнала Robocopy.

Просто хочу показать только скопированный список файлов и его данные.

Итак, я могу сохранить размер файла журнала robocopy, избегая существующих данных о файле в журнале.

Есть ли какой-либо вариант, чтобы избежать этого, пожалуйста, помогите нам в этом

Я не мог видеть никакой опции для этого

Параметры ведения журнала:                          ::

             /L :: List only - don't copy, timestamp or delete any files.
             /X :: report all eXtra files, not just those selected.
             /V :: produce Verbose output, showing skipped files.
            /TS :: include source file Time Stamps in the output.
            /FP :: include Full Pathname of files in the output.
         /BYTES :: Print sizes as bytes.

            /NS :: No Size - don't log file sizes.
            /NC :: No Class - don't log file classes.
           /NFL :: No File List - don't log file names.
           /NDL :: No Directory List - don't log directory names.

            /NP :: No Progress - don't display percentage copied.
           /ETA :: show Estimated Time of Arrival of copied files.

      /LOG:file :: output status to LOG file (overwrite existing log).
     /LOG+:file :: output status to LOG file (append to existing log).

   /UNILOG:file :: output status to LOG file as UNICODE (overwrite existing log).
  /UNILOG+:file :: output status to LOG file as UNICODE (append to existing log).

           /TEE :: output to console window, as well as the log file.

           /NJH :: No Job Header.
           /NJS :: No Job Summary.

       /UNICODE :: output status as UNICODE.
4b9b3361

Ответ 1

По умолчанию robocopy записывает только папки и нерепрезентативные/измененные (то есть скопированные) файлы.

          New Dir          2    C:\Temp\a\
100%        New File                   0        bar.txt
100%        New File                   0        foo.txt

Вы можете подавить регистрацию папок с помощью переключателя /ndl (в этом случае скопированные файлы будут перечислены с полным путем).

100%        New File                   0        C:\Temp\a\bar.txt
100%        New File                   0        C:\Temp\a\foo.txt

Измените только foo.txt и запустите robocopy a b /ndl, и вы получите

100%        Newer                      3        C:\Temp\a\foo.txt

Добавьте /njh и /njs, чтобы удалить заголовок и резюме из вывода. Добавьте /np, чтобы удалить индикацию выполнения (процентное значение в начале строки вывода). Добавьте /xx, чтобы удалить указание дополнительных файлов (файлы, которые существуют только в целевом каталоге, но не в исходной папке):

C:\Temp>robocopy a b /njh /njs /ndl /np

          *EXTRA File                  0        C:\Temp\b\baz.txt
            New File                   0        C:\Temp\a\bar.txt
            New File                   0        C:\Temp\a\foo.txt

C:\Temp>echo "foo" >a\bar.txt

C:\Temp>robocopy a b /njh /njs /ndl /np /l

          *EXTRA File                  0        C:\Temp\b\baz.txt
            Newer                      3        C:\Temp\a\bar.txt

C:\Temp>robocopy a b /njh /njs /ndl /np /xx /l

            Newer                      8        C:\Temp\a\bar.txt

Ответ 2

Вы должны использовать /NFL /NDL. Они удалят все каталоги и списки файлов, которые не являются частью действий robocopy.

Ответ 3

Похоже, вы не можете основываться на этой публикации TechNet, потому что даже вывод /v все равно будет показывать пропущенные файлы.

Только вариант, который я могу представить, будет запускать script в журнале, удаляя пропущенные строки.

Ответ 4

Наконец, я не смог найти никаких переключателей, выбрал script таким образом, чтобы удалить существующую строку сведений о файле и вернуть файл с тем же именем файла после завершения каждого robocopy

#To remove all Lines with string "Extra File"
 (Get-Content $LogPath)-replace '(.*Extra File).+' | Set-Content $LogPath 

#To remove all empty lines 
(Get-Content $LogPath) | Where-Object {$_ -match '\S'} | Set-Content $LogPath  

то, что я сделал в моих файлах журналов для существующей строки сведений о файлах, начинается с строки "Extra File", поэтому я удаляю все эти строки. Но линейное пространство остается. поэтому я использовал еще один комманд, чтобы удалить все пустые строки.

Пожалуйста, внесите вклад, любой из них получил легкий способ для этого

Ответ 5

Я думаю, это может сработать: robocopy sourceDir targetDir./njh/njs/ndl/np | find/v "* Extra File"

Итак, просто подайте вывод на "find" с /V для исключения строк, содержащих указанный текст "Extra File".

Ответ 6

Попробовать прорезать шум; используйте robocopy /xx, и он НЕ покажет файлы, которые уже находятся в папке назначения.