2015-11-12 2 views
1

Ищите помощь со скриптом для поиска по всем папкам в папке c: \ users \ for .pdf, .doc, .docx и т. Д. Я очищаю некоторые компьютеры с файлами на них, но я не хочу просто удалять пользовательские папки только их содержимое. Это для офиса врача, где пользователи не должны ничего сохранять на жестком диске, и я внедрил политику сохранения без сохранения, но хочу удалить и сохранить существующие данные, если они понадобятся для дальнейшего использования.Пакетный файл для поиска pdfs/doc/docx/etc

Будет работать с использованием psexec с сервера на 50+ компьютерах. Если возможно, я ожидал, что вывод будет \ servername \ destinationfolder \ имя_компьютера \ имя_пользователя \ file.pdf или что-то подобное, поэтому я знаю, с какого компьютера и пользователя были получены документы.

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

@echo off 
for /f %%d in ('c:\users') do (
robocopy c:\users\%%d \\servername\destinationfolder *.pdf /s 

for /f %%e in ('c:\users\%%d') do (
robocopy c:\users\%%d\%%e \\servername\desinationfolder *.pdf /s 
    ) 
) 

ответ

0

Вы используете команду FOR неправильно, но я думаю, что вам это не нужно вообще. Следующее должно вырезать его, когда оно повторяется через каждый подкаталог под c:\users, собирает указанные файлы (добавляет расширения, как вам нравится), а затем копирует их в указанное место назначения.

ROBOCOPY c:\users \\servername\destinationfolder *.pdf *.doc *.docx /XJD /S 

Edit: Как оказалось, OP использует более новую версию Windows, чем XP, и этот факт требует переключатель /XJD быть добавлены, которые ...

... будет препятствовать анализу точек соединения Справочника. Это позволяет избежать неприятную проблему рекурсии, которая иногда может произойти с „фальшивыми“ каталогов Windows', такие как „Мои документы“

Edit комплектность: мотивировано @aschipfl, вот указатель на то, что случилось с команда FOR - FOR /F is used in a quite different way. Как вы хотите, чтобы перебрать все каталоги на одном уровне файловой системы, вы можете, например, сделать:

FOR /D %%D IN (c:\users\*) DO (...) 

Но при приближении задачи, как это, вы не можете легко создать структуру каталогов, как ROBOCOPY делает без написав довольно много кода, и это просто лишнее, когда решение может быть таким же простым, как и выше.

+0

Было бы хорошо, если бы вы описали, что вы подразумеваете под «неправильным использованием» команды 'for' для OP, чтобы узнать - что вы думаете? – aschipfl

+0

@aschipfl: Вы будете смеяться, но я на самом деле набрал большую часть этого, когда я понял, используя «FOR» решение, излишне сложно реплицировать поведение ROBOCOPY создания подкаталогов. Поэтому я оставил это на этом. Я всегда передавал знания, но в этом конкретном случае это не имело смысла. – zb226

+0

@aschipfl: Если вам действительно все равно, я оставил записку по этому вопросу. – zb226

Смежные вопросы