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