ट्री डायरेक्टरी को सिंगल लेवल डायरेक्टरी में कैसे बदलें


0

यह प्रश्न भ्रमित हो सकता है, कुछ उदाहरण दिखाना बेहतर है। मेरे पास एक फ़ोल्डर है जिसमें कई उप-निर्देशिका शामिल हैं जो कई स्तर हो सकते हैं। नीचे की संरचना फ़ोल्डर को दिखाती है, सभी फ़ोल्डर में अपनी फ़ाइल होती है।

mainFolder
|--a
|--|--ab
|--|--ac
|--|--ad
|--b
|--b
|--|-cd
|--d

ऊपर मेनफॉल्डर की ट्री संरचना है। मैं एक बैच फ़ाइल लिखने की कोशिश कर रहा हूं जो पूरे पेड़ को एकल स्तर की संरचना में बदलने में सक्षम है।

--a
--ab
--ad
--b
--c
--cd
--d

ऊपर अपेक्षित उत्पादन है। सभी फ़ाइल अपने स्वयं के फ़ोल्डर में होनी चाहिए।

setlocal EnableDelayedExpansion 

set "targetPath=%~dp0mainFolder"

for /r "%targetPath%" %%i in (.) do (

     echo %%i

)

pause

यह मेरा वर्तमान कोड है, जो निर्देशिका के निरपेक्ष पथ को देखने और प्रदर्शित करने में सक्षम है


2
हमें अपना काम अभी तक दिखाएं और बताएं कि आप कहां फंस गए हैं।
गोरोस्तज

@gronostaj ने मेरा सवाल अपडेट किया। क्या मैं सही दिशा में हूँ?
लियोन आर्मस्ट्रांग

1
आपका सबसे अच्छा दांव /Dध्वज का उपयोग करना होगा और एक पुनरावर्ती बीएटी फ़ाइल होगी जो CALLस्वयं है।
Stavr00

जवाबों:


2

विसंगतियां हैं: स्रोत --cमें कोई कमी नहीं है--ac

स्रोत वृक्ष:

> tree
└───mainFolder
    ├───a
    │   ├───ab
    │   ├───ac
    │   └───ad
    ├───b
    ├───c
    │   └───cd
    └───d

बशर्ते mainfolder ड्राइव की जड़ में इस एकल cmdline है:

@for /r "\mainfolder" %A in (.) do @for /f "tokens=5 delims=\" %B in ("%A") do @move "%A" "\mainFolder"

इस गंतव्य पेड़ का उत्पादन करेंगे:

> tree
└───mainFolder
    ├───a
    ├───ab
    ├───ac
    ├───ad
    ├───b
    ├───c
    ├───cd
    └───d

यदि dirlevel से मिलान करने के लिए 5 से टोकन मान समायोजित न करें।
एक बैच फ़ाइल में सभी प्रतिशत संकेतों को दोगुना करें%%

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.