2011-08-31 13 views
13

In un file batch di Windows sto cercando di spostare un file in una directory che potrebbe non esistere al momento. Perché la directory non c'è, quando faccio la mossa vedo un errore come:Windows Batch si sposta nella directory che potrebbe non esistere

Il sistema non riesce a trovare il percorso specificato

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

Come si può creare facilmente il percorso che voglio passare a se al momento non esiste? Per esempio qui, la directory 111 potrebbe non esistere ancora sotto aaa. Voglio creare l'intera struttura del percorso e quindi spostare il file.
Avevo pensato che avrebbe solo creato l'intero percorso per me come parte della mossa.

risposta

18

Prova:

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

prima del vostro comando Sposta.

md rende le directory ricorsive, quindi se non ci sono directory madri su 444, continuerà a creare gerarchicamente. Il "2> nul" garantisce che se hai già la directory, il tuo comando non darebbe errori.

1

Diciamo che avete la seguente struttura di directory.

C:\aaa\bbb\ccc\ddd

si desidera creare una directory chiamata 111 sotto aaa, quindi 222 in 111, poi 333 in 444 e così via cmd

della finestra consente di creare una struttura di directory, fornendo percorso a più livelli

così md c:\aaa\111\222\333\444 creerà tutte le directory fino a 444.

si può decidere di creare la directory prima e quindi eseguire la mossa

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

Se ROBOCOPY è un'opzione, si creerà la struttura delle cartelle, se non esiste.

Prova questo:

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

Proseguendo Aruns risposta:

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 

Questo crea una cartella chiamata mytext.txt e dei suoi genitori, e poi lo cancella, ma non i genitori.

Più divertente:

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 
Problemi correlati