Я пытаюсь скопировать файлы в папку только для чтения без перезаписи
Я прочитал вопросы и ответы от
а также
Пакетное копирование и перемещение файлов без перезаписи
Но мне трудно найти то, что я ищу.
Я хотел бы написать файл простого скрипта (.BAT) для копирования только (не перемещать) файлов с локального диска C:\ в защищенную сетевую папку. Поскольку файлы на локальном диске время от времени изменяются, я хотел бы сохранить как старые, так и новые версии исходных файлов. Есть ли способ скопировать все предыдущие версии файла и автоматизировать добавление идентификатора (например, _01, _02 и т. Д.) В целевой папке во вновь измененные файлы, найденные в исходной папке? Мы также настраиваем событие Windows для запуска этого скрипта каждые 4 часа, чтобы записывать все, что нам нужно в случае сбоя ПК.
Любая помощь очень ценится, так как я новичок.
2 ответа
Как насчет использования метки времени в качестве идентификатора? На моих немецких окнах
echo %date
возвращается 25.11.2016.
С помощью
set ARCHIVNAME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
в командном файле ARCHIVENAME будет выглядеть так:
2016-11-2016
Первое число представляет собой индекс, который нужно взять, второе - длину подстроки, например, 6,4 означает "начать с символа шесть (после"25.11.") И взять четыре символа (2016).
Теперь вы можете использовать переменную ARCHIVENAME в вашей команде копирования:
copy thefile.org otherFolder\%ARCHIVENAME%_thefile.org
Это приведет к имени файла "2016-11-25_thefile.org". Если дни недостаточно уникальны, вы можете сделать то же самое с%TIME%.
И просто для рассмотрения немного другой подход:
Создайте локальный репозиторий Subversion на общем сетевом ресурсе с помощью TortoiseSVN, а затем с помощью командной строки svn проверьте новые версии измененных файлов.
SyncBack позволит вам создавать резервные копии файлов в месте назначения, сохраняя предыдущие копии