Bat перенос файлов из папки в папку

Обновлено: 06.07.2024

Доброго времени, подскажите с кодом:
Задача, в папке C:\In\ есть много папок с файлами, необходимо перенести папки с файлами старше 14 дней в папку C:\Old\
Нашёл два скрипта: один просто переносит всё из папки 1 в папку 2, он рабочий:

Конфигурация компьютера
Процессор: Intel(R) Core(TM) i3 CPU M 370 2.40GHz, ядер: 2, логических процессоров: 4
Память: 8,00 ГБ
ОС: Windows 10 Pro x64
если нужны именно файлы, то что делать если в папке будут файлы не входящие в диапазон (папки с файлами старше 14 дней), не трогать такую папку или выбирать оттуда необходимые файлы, создавать в новом месте папку с таким же именем и помещать их туда, но при таком действии подозреваю дата создания поменяется на текущую.
или дата относится все же к папке и надо переносить папку с места на место, но и в таком случае ее дата создания изменится на текущую, хотя может это и неважно, это не указано пока нигде.

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Последний раз редактировалось megaloman, 20-05-2020 в 09:40 .

если нужны именно файлы, то что делать если в папке будут файлы не входящие в диапазон (папки с файлами старше 14 дней), не трогать такую папку или выбирать оттуда необходимые файлы, создавать в новом месте папку с таким же именем и помещать их туда, но при таком действии подозреваю дата создания поменяется на текущую.
или дата относится все же к папке и надо переносить папку с места на место, но и в таком случае ее дата создания изменится на текущую, хотя может это и неважно, это не указано пока нигде. »
Папки переносятся вместе с файлами,
Есть папка 1 в ней папки с файлами, и просто файлы, необходимо все папки и файлы старше 14 дней перенести из этой папки в папку 2. Если в папке будут файлы не входящие в диапазон, то оставлять.
Конфигурация компьютера
Процессор: Intel(R) Core(TM) i3 CPU M 370 2.40GHz, ядер: 2, логических процессоров: 4
Память: 8,00 ГБ
ОС: Windows 10 Pro x64
valedol_z@vk,
т.е. если в подпапке1: "C:\1\подпапка1" будет 10 файлов старше 14 дней и хотя бы один файл менее 14, то такую папку ("C:\1\подпапка1") уже не трогаем, так?
Если в папке будут файлы не входящие в диапазон, то оставлять »
кстати что по коду megaloman, пробовали, легче будет понять что вам надо.
т.е. если в подпапке1: "C:\1\подпапка1" будет 10 файлов старше 14 дней и хотя бы один файл менее 14, то такую папку ("C:\1\подпапка1") уже не трогаем, так? »

Да всё верно, в папке может быть файл который правили вот недавно значит он ещё нужен.

По поводу megaloman , файлы он перекинул вместе с папками, но папки оставил. скорее всего из-за того что я их туда перенёс раньше, хотя дата создания показывает старое число.

- значит, они не пустые. Остались файлы, не входящие в указанный диапазон по дате изменения, либо подпапки, либо они чем-то заняты, например, открыты другой программой (например, total comander, far). Пустые папки должны были удалиться. Скрипт никак не анализирует даты создания/изменения папок, только дату изменения файлов. Что не устраивает?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Команда MOVE используется для перемещения или переименования файлов и каталогов. Формат командной строки:

Перемещение одного или более файлов:

MOVE [/Y | /-Y] [диск:][путь]имя_файла1[. ] назначение

MOVE [/Y | /-Y] [диск:][путь]имя_папки новое_имя_папки

Параметры командной строки:

[диск:][путь]имя_файла1 - Определяет местоположение файла или файлов, которые необходимо переместить.

Назначение - Определяет новое местоположение файла. Назначение может состоять из буквы диска (с последующим двоеточием), имени папки или их комбинации. При перемещении только одного файла, можно указать и его новое имя, если хотите выполнить его одновременное переименование при перемещении.

[диск:][путь]имя_папки - Определяет папку, которую необходимо переименовать.

новое_имя_папки - Определяет новое имя папки.

/Y - Перезаписывать существующие файлы назначения без предупреждения.

/-Y - Предупреждать при перезаписи существующего файла назначения.

Ключ /Y может присутствовать в значении переменной среды окружения COPYCMD . Оно может перекрываться ключом /-Y в командной строке. По умолчанию используется предупреждение о перезаписи, если только команда MOVE не выполняется как часть пакетного файла.

move /? - отобразить подсказку по использованию команды.

move folder1 folder2 - переименовать папку с именем folder1 в folder2 в текущем каталоге.

move E:\test\folder1 E:\test\folder2 - переименование с указанием абсолютных путей.

move C:\file1.txt D:\ - переместить файл file1.txt с диска C: на диск D:

move c:\test\file1.txt D:\folder2\file2.txt - перенести файл file1.txt из каталога test диска C: в каталог folder2 диска D: под именем file2.txt

move C:\Folder1\*.* D:\Folder2\ - переместить все файлы из каталога Folder1 диска C: в каталог Folder2 диска D:

Реализация в ОС Windows данной команды не позволяет перемещать папки на другие логические диски.

move C:\folder1 C:\folder2\folder3\folder1 - переместить каталог folder1 из корня диска C: в подкаталог \folder2\folder3

При перемещении папки в несуществующий каталог он не будет создан автоматически и команда завершится ошибкой. Команда move не работает с файлами, имеющими атрибуты "скрытый " и "системный".

Как мне ПЕРЕМЕСТИТЬ ( любое копирование не подойдет xcopy\robocopy\Copy-item и проч ) так, что бы Файл 1 перезаписался новым, добавися Файл 2 и все файлы из Папка 1 пропали ?

Тоесть на выходе должно получиться так

Папка 2
Файл 1
Файл 2

дело в том, что там лежат файлы по 100ГБ, и мне нужно моментальное перемещение как если бы я делал CTRL+X

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Как переместить несколько заданных файлов из одной папки в другую?
Всем привет! Допустим, мне необходимо переместить файлы 1.pdf и 2.pdf в другую папку, как это.


Как скопировать файлы из одной папки в другую
Добрый вечер! Имеется проблема! Нужно скопировать из папки с неизвестном количеством файлов 10.

Перемещать файлы из одной папки в другую по 10 штук - BAT
Есть папка, в ней лежат файлы. Задача: переместить файлы из одной папки в другую папку по 10.

Вырезать файлы с пронумерованным именем из одной папки в другую на рабочем столе
Добрый день, Помогите составить простой скрипт который будет файлы с названием 1 2 3 и так до 30

Для всех файлов:

Для конкретных двух:

Спасибо за помощь

Папка 1
Папка Ромашка
Файл 1
Файл 2

Папка 2
Папка Ромашка
Файл 1

move выдаст ошибку

А результат нужен таким

Папка 2
Папка Ромашка
Файл 1
Файл 2

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

Ошибок не будет:

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

Вариант с рекурсивным обходом папок из глубины к корню.
Файлы и папки с символом ! в имени обрабатываться не будут.

И что будет, если целевой папки для копирования файла из ветки вглубине не будет существовать. Dragokas, "ветки вглубине" затрагиваются только номинально для правильной работы команды "attrib" в разборе "for". Никакой рекурсии нет, просто перемещаются все (!) файлы и папки первого уровня вложения. Чтобы "чисто" номинальные (!) ошибки не смущали пользователя, выставлено "2>&1". Подчёркиваю:

Спасибо за ответы, может я что то не так описал.

Есть папка назначения

В каждой папке есть папка BACKUP как на скринах, после отработки скрипта, ничего не происходит

H:\MOVE\FROM
BACKUP
H:\MOVE\TO
BACKUP

То файлы правильно переносятся

НО если СТРУКТУРА различается

H:\MOVE\FROM
BACKUP
H:\MOVE\TO
BACKUP
Файл1

то данные переносятся из H:\MOVE\FROM в папку !x! что не очень тру.

H:\MOVE\TO
BACKUP
Файл1
!x! - сюда переехали ВСЕ файлы из ->

H:\MOVE\FROM
BACKUP

Добавлено через 2 минуты
ComSpec,
Спасибо за ответы

я уже попробовал так, все равно не переносит .

Добавлено через 5 минут
Вообщем задача простая .

Есть
Набор папок и файло в D:\TEST
Есть набор папок и файлов в D:\TEST2
Структура папок может совпадать или файлы могут быть одинаковые.

Если я делаю CTRL+X то система начинает переносить, при совпадение спрашивает мол там уже есть файл заменить ли? и тп. вообщем CTRL+X решает проблему

Мне нужно зеркально CTRL+X только в CMD.

Скрипт и правда работает, который предложил Dragokas,
Но если структура папок не идентичная в Source и ******ation то все файлы перенесутся в !x! из Source.


В очень редких случаях в Windows может быть встроена одна или две функции автоматизации.

Если вам нужно переместить файлы из одной папки в другую через определенное количество дней, лучше всего использовать bat скрипт.

Скрипт для перемещения файлов

Откройте новый файл «Блокнот» и вставьте в него следующее.

Сохраните его с расширением .BAT.

Вы должны отредактировать файл в соответствии со своими потребностями.


Первое, что вам нужно изменить, это значение X во второй строке.

X представляет возраст файла.

По умолчанию установлено значение 30, но вы можете изменить его на любое другое.

Если вы хотите, чтобы файлы были старше 15 дней, измените 30 на 15.

Далее вам нужно изменить путь, указанный в третьей строке.

Замените его на путь к папке.

Убедитесь, что путь и «source =» включаются в закрытые кавычки.

Наконец, замените путь в четвертой строке на полный путь к папке, в которую вы хотите переместить файлы.

Опять же, убедитесь, что все закрыто в кавычках.

Это все, что нужно. Запустите скрипт, и он переместит файлы.

Планирование скрипта

Вы можете вручную запустить скрипт, когда вам это нужно.

Откройте планировщик задач и нажмите «Создать задачу».

Задайте имя задаче и перейдите на вкладку триггеров.

Затем перейдите на вкладку действий и нажмите кнопку «Создать».

Нажмите Ok, и задача завершена.

Включите его, и он автоматически переместит файлы по заданному вами графику.


Robocopy

Этот скрипт использует Robocopy для перемещения файлов.

Этот скрипт будет работать в любой системе Windows, на которой установлен Robocopy, но в некоторых случаях вам, возможно, придется установить ее самостоятельно.

Помогите решить задачу.
Необходимо периодически выполнять сортировку накопленных в папке FOLDER-1 и во всех её подпапках файлов, перенося их в папку FOLDER-2 разнеся по подпапкам. Все подпапки в FOLDER-2 имеют имя длинной в два символа. Первые два символа имени каждого файла из подпапок FOLDER-1 определяют в какую именно подпапку FOLDER-2 он должен быть помещен.

2 Ответ от Flasher 2016-02-25 18:48:55 (изменено: Flasher, 2016-02-26 13:14:17)

  • Flasher
  • Заблокирован
  • Неактивен











3 Ответ от Yury 2016-02-26 00:52:42











4 Ответ от Abashin 2016-02-26 06:04:23

YuryСпасибо! Работает.

5 Ответ от Abashin 2016-02-26 06:30:36 (изменено: Abashin, 2016-02-26 08:07:10)

Yury
Поторопился. Не работает как надо.
Если папки и файлы в FOLDER-1 имеют короткие имена - всё работает хорошо.

Если встречаются длинные имена - возникают проблемы.

6 Ответ от Yury 2016-02-26 08:39:49











Если встречаются длинные имена - возникают проблемы.

Уточню, не длинные имена, а пробелы в полном пути. И на старуху бывает. Забыл кое-что.

7 Ответ от Flasher 2016-02-26 11:25:10

  • Flasher
  • Заблокирован
  • Неактивен











Abashin
А мой вариант с автопереименованием при совпадении имён чем не устроил?

8 Ответ от Abashin 2016-02-26 12:06:21

Извините, Flasher. Я "лошара" не увидел вашего варианта, поскольку не догадался развернуть плюсик, за которым был скрыт код.
А куда его нужно вставить чтоб проверить?

9 Ответ от Flasher 2016-02-26 12:10:12

  • Flasher
  • Заблокирован
  • Неактивен











Abashin
Там же написано - vbs. Это расширение. Только пути нужно верные указать.

10 Ответ от Abashin 2016-02-26 12:12:25

Yury, огромное спасибо! Всё работает.
Маленький нюанс изредка встречается (возможно он не устранимый). Иногда имена папки или файла в FOLDER-1 содержат символы не из ACII кодировки. Такие папки/файлы не обрабатываются. Поскольку это редко - думаю можно руками отсортировать.

11 Ответ от Flasher 2016-02-26 12:13:46

  • Flasher
  • Заблокирован
  • Неактивен











Abashin
Используйте мой скрипт, там нет и этой проблемы.

12 Ответ от Abashin 2016-02-26 12:17:47

Flasher
Проверил - папки в FOLDER-2 создаёт, но файлы не переносит.

13 Ответ от Flasher 2016-02-26 12:26:16

  • Flasher
  • Заблокирован
  • Неактивен











Abashin
Пардон, поправил.

14 Ответ от Abashin 2016-02-26 12:43:55 (изменено: Abashin, 2016-02-26 13:04:46)

Flasher, спасибо - работает!
В варианте дла bat-файла я добавлял расширение обрабатываемых файлов из FOLDER-1. Поскольку для файлов с разными расширениями разные папки назначения.
А в вашем коде я ничего не понимаю и не знаю куда там можно вставить шаблон, например *.fil

15 Ответ от Flasher 2016-02-26 13:15:07

  • Flasher
  • Заблокирован
  • Неактивен











Abashin
Добавил указание фильтра в 3 строке.

16 Ответ от Abashin 2016-02-26 13:32:41 (изменено: Abashin, 2016-02-26 13:55:04)

Flasher
Спасибо

Если нужно чтобы файлы с разными (заранее известными) расширениями попадали в разные папки так изменить ваш код будет корректно?

Читайте также: