Пакет Windows переместится в каталог, который может не существовать

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

Система не может найти указанный путь

move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt

Как я могу легко создать путь, к которому я хочу перейти, если он в настоящее время не существует? Например, каталог 111 может не существовать под aaa. Я хочу, чтобы вся структура пути была создана, а затем файл перемещался.
Я думал, что это просто создаст для меня весь путь как часть движения.

Ответ 1

Пытаться:

md c:\aaa\111\222\333\444 2> nul

перед вашей командой Move.

md делает каталоги рекурсивными, поэтому, если нет родительских каталогов до 444, он будет продолжать создавать иерархически. "2> nul" гарантирует, что если у вас уже есть каталог, ваша команда не будет ошибкой.

Ответ 2

Если ROBOCOPY является вариантом, он создаст структуру папок, если она не существует.

Попробуй это:

ROBOCOPY c:\aaa\bbb\ccc\ddd c:\aaa\111\222\333\444 mytext.txt /MOV

Ответ 3

if not exist c:\aaa\111\222\333\444 md c:\aaa\111\222\333\444
Move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt

Ответ 4

Продолжая на Арунс ответ:

md c:\aaa\111\222\333\444\mytext.txt
rd c:\aaa\111\222\333\444\mytext.txt
move c:\aaa\bbb\ccc\ddd\myfile.txt c:\aaa\111\222\333\444\mytext.txt

Это создает папку mytext.txt и ее родителей, а затем удаляет ее, но не родителей.

Больше удовольствия:

call :move_md "c:\aaa\bbb\ccc\ddd\myfile.txt" "c:\aaa\111\222\333\444\mytext.txt"
call :move_md "c:\aaa\bbb\ccc\ddd\myfile1.txt" "c:\aaa\111\222\333\444\mytext4.txt"
call :move_md "c:\aaa\bbb\ccc\ddd\myfile2.txt" "c:\aaa\111\222\333\444\mytext5.txt"
call :move_md "c:\aaa\bbb\ccc\ddd\myfile3.txt" "c:\aaa\111\222\333\444\mytext6.txt"
goto :eof

:move_md
md %2
rd %2
move %1 %2
goto :eof

Ответ 5

Допустим, у вас есть следующая структура каталогов.

C:\aaa\bbb\ccc\ddd

вы хотите создать каталог под 111a под aaa, затем 222 под 111, затем 333 под 444 и так далее

Window cmd позволяет создавать структуру каталогов, предоставляя многоуровневый путь

таким образом, md c:\aaa\111\222\333\444 создаст всю директорию до 444.

Вы можете сначала создать каталог, а затем выполнить перемещение