Как копировать только новые файлы из одной папки в другую с помощью PowerShell
У меня небольшие проблемы с завершением сценария PowerShell. У меня есть программа, которая загружает изображения во временную папку, а затем в течение часа удаляет файлы изображений. Иногда я хотел бы сохранить некоторые файлы, поэтому я создаю сценарий PowerShell для копирования файлов изображений из временной папки в новую папку, чтобы я мог отсортировать их и сохранить то, что хочу.
- Это одностороннее копирование из папки загрузки в папку назначения.
- Поскольку сценарий будет запускаться планировщиком задач Windows каждые 20 минут, я хочу, чтобы сценарий сравнивал файлы, которые он находит в папке загрузки, с файлами в папке назначения, чтобы увидеть, есть ли они там.
- Если файл новый, скопируйте его, если он уже находится в папке назначения, игнорируйте его.
- Это только совпадение только имени файла, а не двоичное сравнение.
Поискав в Интернете, я нашел скрипт на TomsITpro на тему «Как синхронизировать папки с PowerShell». Этот сценарий копирует файлы в обе папки между двумя папками. Когда я пытаюсь изменить это, чтобы скопировать только одним способом, я получаю ошибки PowerShell.
Этот скрипт вроде как работает, очень хорошо сравнивает и копирует только новые файлы, если они уже существуют. Проблема в том, что когда я запускаю его из папки d: \ script, он копирует все файлы в папку d: \ script вместо папки назначения, D: \ KeepImages. Что я здесь делаю не так?
Как копировать только новые файлы И только те, которые были изменены после определенной даты?
Я хотел бы скопировать файлы с одного диска на другой, но я хочу только скопировать исходные файлы, которые являются более новыми, чем файл назначения. НО , я также хочу только скопировать исходные файлы, которые были изменены после определенной даты.
Я знаю, что могу использовать xcopy для выполнения одной из этих задач, но я хотел бы сделать это одновременно.
Так, например, я хочу скопировать все исходные файлы, датированные или после 3/1/2013, но, кроме того, я хочу, чтобы файл был скопирован, если исходный файл более новый, чем место назначения. Поэтому в идеале я хотел бы сделать что-то вроде этого:
в сочетании с чем-то вроде этого:
Можно ли это сделать с помощью xcopy или Robocopy?
3 ответа
Вероятно, вы получите то, что хотите:
Добавьте команду /L , чтобы увидеть, что она будет делать, не делая этого сначала, только чтобы убедиться.
Посмотрите здесь для получения дополнительной информации о вариантах Robocopy.
Просто используйте обе опции в одной команде:
получает то, что вы хотите.
Если кто-то хочет сделать то же самое без командной строки, инструмент SyncToy выполняет работу довольно хорошо.
Копирование измененных / измененных файлов из одной папки в другую в Windows
Если вы хотите скопировать только те файлы, которые были изменены / изменены из пула тысяч других файлов, то это, несомненно, сложная задача. Я лично видел, как пользователи создают сложные сценарии для такой задачи. Если вы обычный пользователь компьютера без опыта программирования, вам все равно повезет.
CopyChangedFiles это крошечная бесплатная портативная утилита для Windows, которая копирует только файлы, которые были изменены пользователем в определенную дату или после нее. И да, он поддерживает многопоточность. Просто выберите место назначения и место назначения, выберите измененные на дату или после даты, типы файлов и нажмите «Копировать».

Так что толку спросите вы? Различные, среди них наиболее важное использование, которое приходит мне в голову, — это создание инкрементных резервных копий. По словам разработчика, другое использование — это когда у вас есть много клиентских веб-сайтов, которые вы поддерживаете, и хотите обновлять только измененные файлы.