Назад | Перейти на главную страницу

Как мне использовать robocopy для рекурсивного вывода списка всех файлов определенного размера?

Я чувствую себя довольно глупо, поскольку robocopy - это администрирование сервера 101; но мне кажется, что у меня проблема со списком файлов.

Я хочу перечислить все файлы размером более 10 МБ в каталоге и подкаталоге.

В соответствии с документы, вот что должно работать:

robocopy c:\ /min:10485760 /s /l /fp /tee /log:c:\robocopy.log /njh /njs /ndl

Но когда я запускаю его, возвращается ошибка «Не указан каталог назначения», что, как мне кажется, не требуется, если вы используете параметр списка (/ L).

Кроме того, если я включу тот же каталог, что и пункт назначения, например:

robocopy c:\ c:\ /min:10485760 /s /l /fp /tee /log:c:\robocopy.log /njh /njs /ndl

Ничего не возвращается; но если я отброшу список каталогов (/ ndl), я увижу список всех каталогов.

Итак, мой вопрос: как мне использовать robocopy, чтобы перечислить файлы размером более 10 МБ в древовидной структуре каталогов, и только это?

Спасибо!

Если ты не привязан к robocopy, вы можете добиться этого с помощью forподстановка переменной: -

@for /f "tokens=*" %F in ('dir /s /b /a:-d c:\') do @(
    if %~zF geq 10485760 echo %F
)

dir /s /b /a:-d c:\ дает вам рекурсивный список (/s) всех не справочников (/a:-d) под c:\ в голом формате (/b) для облегчения анализа.

for перебирает этот список ("tokens=*" необходим, если у вас есть пути с пробелами), и давайте вы получите ссылку на размер файла, используя его ~z модификатор переменной в любых подкомандах (например, if для сравнения с размером, который вам нужен).

В @предназначены для подавления эха команд и могут быть опущены, если вы вызвали @echo off ранее (например, в пакетном файле).

Попробуйте включить каталог% tmp% в качестве места назначения. У меня нет более старого варианта robocopy для тестирования, но я помню, что / l действительно перечисляет что он собирается делать не только файлы. Поэтому вам нужно «отправить» данные туда, где их не существует, чтобы robocopy распечатал все файлы и каталоги, которые еще не существуют в месте назначения.

Вы можете взглянуть на tdel. Он имеет несколько очень мощных функций, когда дело доходит до работы с размерами файлов и датами. Его можно запустить в «тестовом» режиме, чтобы получить соответствующие списки, а не выполнять удаление файлов.

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

С Robocopy, если вы не создаете файл задания шаблона с задействованным / QUIT (который не позволяет robocopy делать что-либо, кроме проверки синтаксиса) и не используете / NODD вместо целевого каталога, вам всегда нужно указать целевой каталог. , даже если вы просто делаете листинг. Чтобы получить список файлов, можно было бы создать пустую папку, например, в TEMP, и указать ее в качестве места назначения. Он был бы пустым, поэтому каждый файл в источнике отображался в списке. Затем удалите папку под temp, когда закончите - она ​​должна быть пустой.