2011-08-31 14 views
13

एक विंडोज बैच फ़ाइल में मैं एक फ़ाइल को उस निर्देशिका में स्थानांतरित करने की कोशिश कर रहा हूं जो वर्तमान में मौजूद नहीं है। पथविंडोज बैच निर्देशिका में स्थानांतरित हो सकता है जो

प्रणाली नहीं मिल सकता है निर्दिष्ट

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

कैसे मैं आसानी से रास्ता है कि मैं अगर ले जाना चाहते हैं बना सकते हैं: क्योंकि निर्देशिका वहाँ नहीं है, जब मैं इस कदम करना मैं एक त्रुटि की तरह देखते हैं यह वर्तमान में मौजूद नहीं है? उदाहरण के लिए, निर्देशिका 111 अभी तक aaa के अंतर्गत मौजूद नहीं हो सकता है। मैं पूरी पथ संरचना बनना चाहता हूं और फिर फ़ाइल चली गई।
मैंने सोचा था कि यह कदम के हिस्से के रूप में मेरे लिए सिर्फ पूरा रास्ता बनायेगा।

उत्तर

18

प्रयास करें:

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

से पहले अपने चाल आदेश।

एमडी निर्देशिकाओं को रिकर्सिव बनाता है, इसलिए अगर 444 में कोई मूल निर्देशिका नहीं है, तो यह पदानुक्रमित रूप से बनाए रखेगी। "2> नूल" यह सुनिश्चित करता है कि यदि आपके पास पहले से ही निर्देशिका है, तो आपका आदेश त्रुटि नहीं देगा।

1

मान लें कि आपके पास निम्न निर्देशिका संरचना है।

C:\aaa\bbb\ccc\ddd

आप एक निर्देशिका बनाना चाहते हैं aaa के तहत 111, तो 111 के तहत 222, तो 444 के तहत 333 और इतने

खिड़की के cmd पर आप बहु स्तर पथ प्रदान करके एक निर्देशिका संरचना बनाने की अनुमति देता बुलाया जब तक 444

आप पहली बार निर्देशिका बनाना चाह सकते हैं

इस प्रकार md c:\aaa\111\222\333\444 सभी निर्देशिका का निर्माण करेगा और उसके बाद कदम प्रदर्शन

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 एक विकल्प है, यह अगर यह मौजूद नहीं है फ़ोल्डर संरचना का निर्माण करेगा। Aruns जवाब पर जारी रखते हुए

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

:

इस प्रयास करें

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 
संबंधित मुद्दे