У меня есть папка (назовем это 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 {} . ;
и, кажется, все в порядке.