У мене є папка (назвемо це A) з великою кількістю підпапок B, C, D, E, які потім знову мають підпапки B1, B2, B3, ... C1, C2, C3 ...
Як я можу за допомогою cmd переміщати всі файли з усіх папок у "кореневу" папку A?
У мене є папка (назвемо це A) з великою кількістю підпапок B, C, D, E, які потім знову мають підпапки B1, B2, B3, ... C1, C2, C3 ...
Як я можу за допомогою cmd переміщати всі файли з усіх папок у "кореневу" папку A?
Відповіді:
Моя оригінальна публікація знехтувала, щоб включити розширення файлу в команду переміщення.
%~niповертає лише базове ім'я, яке вам потрібно використовувати,%~nxiщоб отримати і ім’я файлу, і розширення! Сподіваюсь, ви не зіпсували свої файли на моєму рахунку! (
З командного рядка:
cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"
Якщо після цього потрібно очистити порожні папки:
for /d %i in (*) do @rd /s /q "%i"
Тепер, якщо у вас є зіткнення з іменем файлу, ви самостійно. Ви можете додати /yпараметр до moveкоманди (до "%i"), щоб примусити перезаписувати. Якщо ви хочете чогось іншого, вам знадобиться інша програма, яка може перейменувати все для вас.
Крім того , якщо ви хочете використовувати це в пакетному файлі, змінити все %до %%.
FOR /r- приємно!
Створіть папку та скопіюйте у неї всі інші папки, потім клацніть правою кнопкою миші та виберіть Пошук . У вікні пошуку введіть *.*.
Тут буде перераховано всі файли та папки. Виберіть усі файли, які ви хочете, у вашому кореневому каталозі та виріжте їх. Перейдіть до кореневого каталогу та вставте всі файли туди.
Встановіть Cygwin (або інше середовище Unix для Windows) та запустіть наступне:
cd A
find . -type f -exec mv {} . \;
mvта findваріантів, можливо, вам доведеться використовувати find . -type f -exec mv -t . {} \;замість цього.
mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cі touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccдля підготовки.
find . -type f -exec mv {} . ;І, здавалося, спрацює добре.