Этот вопрос может быть сбит с толку, лучше показать пример. У меня есть папка, которая содержит много подкаталогов, которые могут быть многоуровневыми.Структура ниже показывает папку, все папки содержат свой собственный файл.

mainFolder
|--a
|--|--ab
|--|--ac
|--|--ad
|--b
|--b
|--|-cd
|--d

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

--a
--ab
--ad
--b
--c
--cd
--d

Выше ожидаемый результат. Все файлы должны быть в отдельной папке.

setlocal EnableDelayedExpansion 

set "targetPath=%~dp0mainFolder"

for /r "%targetPath%" %%i in (.) do (

     echo %%i

)

pause

Это мой текущий код, который может перебирать и отображать абсолютный путь к каталогу

1 ответ1

2

Есть несоответствия: в источнике --c отсутствует, в dest нет --ac

Исходное дерево:

> tree
└───mainFolder
    ├───a
    │   ├───ab
    │   ├───ac
    │   └───ad
    ├───b
    ├───c
    │   └───cd
    └───d

Предоставленная основная папка находится в корне диска этой единственной cmdline:

@for /r "\mainfolder" %A in (.) do @for /f "tokens=5 delims=\" %B in ("%A") do @move "%A" "\mainFolder"

Будет производить это дерево назначения:

> tree
└───mainFolder
    ├───a
    ├───ab
    ├───ac
    ├───ad
    ├───b
    ├───c
    ├───cd
    └───d

Если нет, откорректируйте значение токенов от 5 до уровня уровня.
В пакетном файле удваивают все знаки процента %%

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