Пакетное перемещение Windows в каталог, который может не существовать - PullRequest
17 голосов
/ 01 сентября 2011

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

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

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

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

Ответы [ 5 ]

22 голосов
/ 01 сентября 2011

Попробуйте:

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

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

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

16 голосов
/ 01 сентября 2011

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

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

ROBOCOPY c:\aaa\bbb\ccc\ddd c:\aaa\111\222\333\444 mytext.txt /MOV
5 голосов
/ 01 сентября 2011
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
3 голосов
/ 29 мая 2014

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

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
2 голосов
/ 01 сентября 2011

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

C:\aaa\bbb\ccc\ddd

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...