Перемещение файлов из подпапки в основные папки, находящиеся во многих папках

Перемещение файлов из подпапки в основные папки, находящиеся во многих папках

Моя программа импорта фотографий помещает резервную копию фотографий в папку с надписью "импортировано ДАТА". Эти папки создаются как подпапки нужной папки. У меня много таких "импортированных" папок под несколькими слоями папок. Вот пример:

C:\pictures\all photos 2013\01jan13\импортировано 18 января.

Есть ли способ просканировать папку pictures вниз по всем ее подпапкам и заставить программу переместить все файлы из папки "imported on" в папку выше? Извините, если это сбивает с толку!

Спасибо за любую помощь.

решение1

Это работает в Windows 7; о других версиях не знаю:

for /r C:\pictures %F in (*.*) do move %F %F\..\..

Примечания:

  • for /r C:\pictures %F in (*.*) do …выполняет следующий оператор один раз для каждого файла в C:\pictures, рекурсивно, с %Fустановленным именем файла.
  • moveперемещает файл.
  • Здесь все становится сложнее. Вы знаете, что это cd ..поднимает вас на один уровень выше. Ну, оказывается, вы можете сказать \Users\rshonaker\Documents\fubar.doc\.., и это будет ссылаться на \Users\rshonaker\Documents(каталог, в котором находится файл), то %F\..есть каталог, в котором %Fнаходится файл. И затем %F\..\..— родительский каталог этого каталога.

Еще заметки:

  • Используйте с осторожностью. Если у вас есть файлы в C:\pictures, будет предпринята попытка переместить их в C:\. Если у вас есть файлы в C:\pictures\all photos 2013, будет предпринята попытка переместить их в C:\picturesи т. д.
  • Если вы хотите поместить это в скрипт, замените все вхождения %Fна %%F.

Связанный контент