WedX - журнал о программировании и компьютерных науках

BATCH - лучший способ скопировать одну папку из нескольких каталогов

Я создал программу пакетного резервного копирования для работы. Он также имеет возможность восстановить данные на компьютер.

Первоначально у меня было robocopy, исключающее appdata и просто захватывающее файлы Outlook отдельно. Недавно я обнаружил, что хочу получить все данные приложения, но поместить их в отдельную папку. Моя задача в том, что я хочу получить Appdata от всех пользователей на компьютере, а не только от текущего пользователя. Я знаю, что могу просто найти все папки в C:\Users, а затем скопировать папки appdata в цикле for, но мне кажется, что должен быть лучший и более чистый способ сделать это.

В настоящее время я бы сделал что-то вроде этого: (это не рабочий код, это просто идея, которую я хочу сделать чище)

For /f %%a in ('dir C:\Users /B /A D') do (
   robocopy "C:\Users\%%a" "BACKUP DIR\AppData"
)

Я хотел бы получить решение, больше похожее на метод исключения

robocopy "C:\Users" "BACKUP DIR\AppData" /only folders named appdata
09.02.2018

  • Robocopy имеет вариант /S. 10.02.2018
  • Разве это не просто копирование всех подкаталогов? Я хочу получить только данные приложения от всех пользователей в C:\Users 10.02.2018
  • Вряд ли на верхнем уровне ваших каталогов AppData будет много файлов, но если это то, что вы хотели, то я прошу прощения. 10.02.2018

Ответы:


1

Это проверит, есть ли у пользователя каталог appdata, и скопирует его.

for /f %%a in ('dir /b /a:d "C:\Users"') do (
  if exist C:\Users\%%a\Appdata robocopy c:\Users\%%a\Appdata\ D:\BACKUP\
)

Вам, вероятно, также нужно сделать if not exist backup mkdir backup, если у каждого пользователя будет свой собственный резервный каталог.

10.02.2018
  • Протестировал это сегодня и оказался в бесконечном цикле. for /f %%a in ('dir "C:\Users" /B /A D') do if exist "C:\Users\%%a\Appdata" robocopy c:\Users\%%a\Appdata\ F:\BACKUP\%%a\ /s 11.02.2018
  • Ваш не работал, так что я заставил его по крайней мере работать. Я запускаю его как пакетную программу, поэтому %a не работает. поставив "C:\Users" первым, получил: 0 c:\Users\Default\Appdata\Local\Application Data\ 0 c:\Users\Default\Appdata\Local\Application Data\Application Data которого не существует. Мои правки позволили коду запускаться и копироваться, но вместо того, чтобы копировать 50 ГБ, он продолжал работать, и я отменил его, когда он достиг 70 ГБ. 11.02.2018
  • это был отсутствующий : в /a:d в моей версии кода. Теперь он работает без циклов. 11.02.2018
  • Почему этот код работает на Win 10, но не на Win 7? 12.02.2018
  • @garyallen Что ты имеешь в виду под не работает? Какой вывод или ошибка? 12.02.2018
  • Нет ошибки, но он продолжает создавать каталог в каталоге на неопределенный срок. Пришлось форматировать тест-драйв, чтобы удалить его. d:\backup\appdata\application data\application data\application data\application data\application data\application data\application data\application data и далее... 12.02.2018
  • Придется смоделировать это и посмотреть, почему. Вернется к вам. 12.02.2018
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]