2013-07-15 10 views
10

मेरे पास एक बहुत ही जटिल निर्देशिका संरचना में कई फ़ाइलें हैं, और जिन कारणों से चर्चा करने योग्य नहीं है, उन्हें ".inp" के विस्तार के साथ ".inp" के विस्तार के साथ सभी फ़ाइलों का नाम बदलने की आवश्यकता है। एक्सटेंशन। अन्य एक्सटेंशन के साथ कई अन्य फाइलें हैं जिन्हें मैं छूना नहीं चाहता हूं, और मैं इसे कम से कम 5 स्तरों पर फिर से करना चाहता हूं।फ़ाइल एक्सटेंशन के बड़े पैमाने पर नाम बदलें (विंडोज बैच)

अब तक मेरे पास है:

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd 

... लेकिन यह केवल नीचे निर्देशिका में से एक स्तर चला जाता है।

क्या कोई मदद कर सकता है? अग्रिम में धन्यवाद!

उत्तर

16
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt" 

आपके लिए काम करना चाहिए। startdir को अपने शुरुआती निर्देशिका नाम के साथ बदलें और जब आपने यह सुनिश्चित किया है कि यह आपकी संतुष्टि के लिए काम करता है, तो वास्तव में नाम बदलने के लिए ren से पहले echo हटा दें।


downvoters के लिए: एक बैच फ़ाइल को क्रियान्वित आदेश से excuting से अलग संकेत है कि प्रत्येक %%x जहां x metavariable (पाश नियंत्रण चर) है % करने के लिए कम करने की जरूरत है, तो

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt" 

काम करना चाहिए यदि आप इसे प्रॉम्प्ट से निष्पादित करते हैं। कृपया echo के बारे में नोट पढ़ें।

+0

बहुत बढ़िया! यह एक काले जादू की तरह सरल और प्रभावी है :) – myforums

+0

@ मैगू ... मुझे लगता है कि मैं तुमसे प्यार करता हूँ। इस समाधान के लिए धन्यवाद जो मेरी जिंदगी के 2 दिन, उत्कृष्ट काम धन्यवाद! – Neville

20

विंडोज 7, मेरे लिए निम्नलिखित एक पंक्ति का आदेश काम करता है, पर * .js में सभी फ़ाइलों का नाम बदलना, रिकर्सिवली, करने के लिए * .txt:

FOR /R %x IN (*.js) DO ren "%x" *.txt 
+3

यह काम करता है, चयनित उत्तर नहीं था, "%% मैं अप्रत्याशित था"। इसके लिए धन्यवाद ! –

+0

स्वीकृत उत्तर में कोड से "%% मुझे अप्रत्याशित" त्रुटि मिली। ध्यान दें कि आपको प्रारंभ निर्देशिका – brunettdan

+0

@SteveChamaillard में सीडी करना होगा: ऐसा इसलिए है क्योंकि चयनित उत्तर मानता है कि रेखा बैच फ़ाइल में है। यदि इसे प्रॉम्प्ट से निष्पादित किया गया है, तो आपको प्रत्येक '%%' से '%' – Magoo

संबंधित मुद्दे