2011-08-31 22 views
13

Bir Windows toplu iş dosyasında bir dosyayı şu anda bulunmayan bir dizine taşımaya çalışıyorum. yolWindows Toplu işlenmemiş dizine taşı

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

belirtilen

sistem bulamıyor nasıl kolayca ben eğer taşımak istediğiniz yolu oluşturabilirsiniz: dizin olmadığı için ben hareketi yaptığınızda, ben gibi bir hata bakın şu anda mevcut değil mi? Örneğin, burada 111, aaa altında henüz bulunmayabilir. Tüm yol yapısının oluşturulmasını istiyorum ve sonra dosya taşındı.
Sadece hareketin bir parçası olarak benim için tüm yolu yaratacağını düşündüm.

cevap

18

Dene:

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

senin Taşı komutu önce.

md dizinleri yinelemeli yapar, bu nedenle 444 için ana dizin yoksa, hiyerarşik olarak oluşturmaya devam eder. "2> nul", dizini zaten aldıysanız, komutunuzun hata yapmamasını sağlar.

1

Aşağıdaki dizin yapısına sahip olduğunuzu söyleyelim.

C:\aaa\bbb\ccc\ddd

Eğer bir dizin oluşturmak istediğiniz aaa altında 111, 111 altında daha sonra 222, 444 altında daha sonra 333 ve böylece

Pencere cmd üzerinde çoklu seviye yolunu sağlayarak bir dizin yapısı oluşturmak için izin verir denilen

444.

Önce dizini oluşturmak isteyebilir kadar dayanıp md c:\aaa\111\222\333\444 tüm dizin oluşturacaktır ve sonra hareketi gerçekleştirmek

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

ROBOCOPY bir seçenekse, yoksa klasör yapısını oluşturur.

bu deneyin:

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

Aruns yanıta devam:

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 

Bunlara veliler mytext.txt ve veliler adlı bir klasör oluşturur ve sonra siler ama.

Daha eğlenceli:

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