2011-08-31 10 views
13

En un archivo por lotes de Windows, estoy intentando mover un archivo a un directorio que puede que no exista actualmente. Debido a que el directorio no está ahí, cuando lo haga el movimiento que veo un error como:Windows Lote mueve al directorio que puede no existir

El sistema no puede encontrar la ruta especificada

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

¿Cómo se puede crear fácilmente el camino que quiero seguir a si no existe actualmente? Por ejemplo aquí, el directorio 111 puede no existir aún bajo aaa. Quiero que se cree la estructura de ruta completa y luego se mueva el archivo.
Pensé que crearía todo el camino para mí como parte de la mudanza.

Respuesta

18

Probar:

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

antes de su comando Mover.

md hace que los directorios recursivos, por lo que si no hay directorios principales en 444, se seguirá creando de forma jerárquica. El "2> nul" asegura que si ya tiene el directorio, su comando no generará un error.

1

Digamos que tiene la siguiente estructura de directorio.

C:\aaa\bbb\ccc\ddd

desea crear un directorio llamado 111 en virtud de la AAA, 222 bajo 111, luego 333 bajo 444 y así sucesivamente cmd

de la ventana le permite crear una estructura de directorios, proporcionando ruta de varios niveles

tanto md c:\aaa\111\222\333\444 va a crear todo el directorio hasta 444.

es posible que desee crear el directorio primero y luego realizar el movimiento

4
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 
12

Si ROBOCOPY es una opción, se creará la estructura de carpetas si no existe.

Prueba esto:

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

Continuando respuesta Aruns:

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 

Esto crea una carpeta llamada mytext.txt y sus padres, y luego lo elimina, pero no los padres.

Más diversión:

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 
Cuestiones relacionadas