मैं हर फाइल को एक पेड़ से पेड़ की जड़ में कैसे स्थानांतरित करूं?


10

मेरे पास एक फ़ोल्डर है (चलो इसे ए कहते हैं) बी, सी, डी, ई के बहुत से, जिसके बाद फिर से सबफोल्डर्स बी 1, बी 2, बी 3, ... सी 1, सी 2, सी 3 ...

मैं सभी सबफ़ोल्डर्स से सभी फ़ाइलों को "रूट" फ़ोल्डर A में स्थानांतरित करने के लिए cmd का उपयोग कैसे कर सकता हूं?


मैं मान रहा हूँ कि आप हर फाइल को एक रूट में चाहते हैं, सबफ़ोल्डर्स में नहीं? तो A \ File1, A \ File2, A \ Folder2 \ File1 नहीं?
कनाडाई ल्यूक

@ ल्यूक - हां, आपको मिल गया। फ़ोल्डर और सबफ़ोल्डर में मौजूद प्रत्येक फ़ाइल रूट हो गई।
रूक

जवाबों:


12

चाल कमान में फ़ाइल के विस्तार को शामिल करने के लिए मेरी मूल पोस्ट की उपेक्षा की गई। %~niकेवल आधार नाम देता है, आपको %~nxiफ़ाइल नाम और एक्सटेंशन दोनों प्राप्त करने के लिए उपयोग करने की आवश्यकता है ! मुझे आशा है कि आपने अपने फ़ाइलनामों को मेरे खाते में नहीं डाला है!

कमांड प्रॉम्प्ट से:

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

यदि आपको बाद में खाली फ़ोल्डरों को साफ करने की आवश्यकता है:

for /d %i in (*) do @rd /s /q "%i"

अब, यदि आपके पास कोई फ़ाइल नाम क्लैश है, तो आप अपने दम पर हैं। आप अधिलेखित /yकरने के लिए पैरामीटर को moveकमांड ( "%i") से पहले जोड़ सकते हैं । यदि आप कुछ अलग चाहते हैं, तो आपको एक और कार्यक्रम की आवश्यकता होगी जो आपके लिए सब कुछ ऑटो-रीनेम कर सके।

इसके अलावा, आप एक बैच फ़ाइल में इस का उपयोग करना चाहते हैं, सब बदल %करने के लिए %%


के बारे में पता नहीं था FOR /r- अच्छा!
डैनियल बेक

वाह, बहुत बढ़िया। मैं आपके आदेश-फू को नमन करता हूं।
Mokubai

2

एक फ़ोल्डर बनाएं और उसमें अन्य सभी फ़ोल्डरों को कॉपी करें, फिर उस फ़ोल्डर पर राइट क्लिक करें और खोजें चुनें । खोज बॉक्स में दर्ज करें *.*

यह सभी फ़ाइलों और फ़ोल्डरों को सूचीबद्ध करेगा। अपनी रूट डायरेक्टरी में अपनी इच्छित सभी फाइलों को चुनें और उन्हें काटें। अपनी रूट डायरेक्टरी में नेविगेट करें और वहां मौजूद सभी फाइलों को पेस्ट करें।


खोज मेरे cmd में एक कमांड के रूप में मौजूद नहीं है।
रूक

रिचर्ड आ कमांड के बारे में बात नहीं कर रहा था। इसे स्पष्ट करने के लिए अपने उत्तर को संपादित किया है।
इसहाक राबिनोविच 11

0

Cygwin (या विंडोज के लिए एक और यूनिक्स वातावरण) स्थापित करें और निम्नलिखित चलाएँ:

cd A
find . -type f -exec mv {} . \;

आपके mvऔर findवेरिएंट के आधार पर , आपको find . -type f -exec mv -t . {} \;इसके बजाय उपयोग करने की आवश्यकता हो सकती है ।
डैनियल बेक

1
कई यूनिक्स टूल्स के देशी विंडोज पोर्ट के लिए मुझे unxutils.sourceforge.net
डेनिस

@ डेनिस UnxUtils अच्छा है, दुर्भाग्य से अब तक काफी पुराना है। यदि आप इस समय उनका उपयोग कर रहे हैं, तो क्या आप मेरे पोस्ट कार्यों को उनके साथ सत्यापित कर सकते हैं? mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 cऔर touch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccतैयारी के लिए।
डैनियल बेक

-1 यह सच हो सकता है, लेकिन मैं इस बारे में पूछताछ कर रहा था कि इसे cmd में कैसे किया जाए।
रूक

@ डैनियल कोई संदेह नहीं कि वे पुराने हैं, मैं उन्हें सालों से घसीट रहा हूं। मैंने बस कोशिश की find . -type f -exec mv {} . ;और यह ठीक काम करने लगा।
डेनिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.