1

Я застрял и не могу найти быстрый способ исправить это.

У меня есть внешний жесткий диск с такой структурой папок:

  • \folder1
  • \folder2
  • \folder3

у некоторых из них есть подкаталог с таким же именем, например

  • \folder1
  • \folder2\folder2
  • \folder3\folder3

Я хотел бы использовать пакетный режим, если это возможно, чтобы в основном искать одно и то же имя только в одном каталоге и, если он совпадает, переместить все файлы из \folder2\folder2 в \folder2 .

У меня есть 640 папок, чтобы разорвать для этого исправления.

Я нашел эту ссылку , противоположную тому, что я хотел сделать.  Все, что я устал на моей тестовой структуре, не будет работать.

1 ответ1

0

Прежде всего, если возможно, я предлагаю вам сделать резервную копию всего дерева каталогов на случай, если что-то пойдет не так.  Затем попробуйте ввести команду

for /d %d in (*) do @echo move %d\%d\* %d

Это должно вывести что-то вроде

move folder1\folder1\* folder1
move folder2\folder2\* folder2
move folder3\folder3\* folder3

Если это похоже на правдоподобную последовательность команд, пропустите echo:

for /d %d in (*) do @move %d\%d\* %d

Это выдаст сообщение об ошибке для folder1 , так как folder1\folder1 не существует.  Он также выдаст сообщение об ошибке для любой папки, в которой папка второго уровня пуста.

Если вы хотите подавить сообщения об ошибках для папок, в которых папка второго уровня не существует, поместите следующее в пакетный файл:

@echo off
for /d %%d in (*) do (
    if exist %%d\%%d\nul (
        echo move %%d\%%d\* %%d
    ) else (
        echo %%d\%%d doesn't exist.
    )
)

или просто

@echo off
for /d %%d in (*) do if exist %%d\%%d\nul echo move %%d\%%d\* %%d

(Обратите внимание, что вы должны использовать %% в пакетном файле, где вы используете % непосредственно в командной строке.)

Очевидно, что существует риск, что у вас будут файлы с одинаковыми именами в каталоге и его подкаталоге, например, folder2\shopping.lst и folder2\folder2\shopping.lst .  В моем быстром тестировании в неважном дереве каталогов он спросил, хочу ли я перезаписать (т. Е. Перехватить) целевой файл (верхнего уровня).  Как я уже сказал, я советую сначала сделать резервные копии своих файлов, чтобы быть в безопасности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .