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