फ़ोल्डर का नाम बदलें?


0

यह शायद एक सुपर-सरल पहले से ही हल किया गया कार्य है, लेकिन:

मेरे पास विभिन्न स्वरूपों में ईबुक वाले फ़ोल्डरों की एक श्रृंखला है। उनके पास फ़ोल्डर का नाम प्रारूप है:

\Lastname, Firstname (n books)\

मैं प्रत्येक फ़ोल्डर का नाम बदलना चाहता हूं

\Firstname Lastname\

जो मैं अनुमान लगा रहा हूं कि यह एक बैच फ़ाइल के साथ काफी आसानी से किया जा सकता है, लेकिन यह बहुत लंबा समय है क्योंकि मुझे स्ट्रिंग पार्सिंग करनी थी इसलिए मुझे याद नहीं है कि कैसे।

मदद? मैं विंडोज 7 का उपयोग कर रहा हूं।


आप कौन सा ओएस उपयोग कर रहे हैं?
पॉल

@Paul: सही है, यह उपयोगी जानकारी होती है, है ना? ;) विंडोज 7.
मार्गरेट

जवाबों:


3

रिक्त स्थान मान लेना आपके उदाहरण (यानी Firstname और Lastname में स्थान नहीं है) के अनुरूप हैं, यह काम करना चाहिए।

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=1,2,*" %%a in ('dir /a:d /b') do (
    set lastname=%%a
    set lastname=!lastname:~0,-1!
    ren "%%a %%b %%c" "%%b !lastname!"
)

endlocal

यह केवल रिक्त स्थान से विभाजित होता है, और लास्टनाम को बंद कर देता है, बैच फ़ाइल के समान निर्देशिका में सभी निर्देशिकाओं का।

यदि नाम रिक्त स्थान हो सकते हैं, तो कुछ सीमांकक हेरफेर आवश्यक है। मैं इसके साथ बेला जाऊंगा।

संपादित करें:

ये रहा। डेलिमिटर के साथ फ़िडलिंग का अर्थ है कि Firstname पहले और बाद में एक स्थान से घिरा हुआ था, जिसे छंटनी की जानी थी। तो अनिवार्य रूप से, यह एक उम्मीद Lastnameएक के बाद ,पीछा किया एक से Firstname एक के बाद (whatever। Firstname के आसपास रिक्त स्थान महत्वपूर्ण हैं (और आपके उदाहरण में हैं)। नामों के भीतर रिक्तियाँ ठीक काम करती हैं।

@echo off

setlocal EnableDelayedExpansion

for /f "tokens=1,2,* delims=,(" %%a in ('dir /a:d /b') do (
    set firstname=%%b
    set firstname=!firstname:~1,-1!
    ren "%%a,%%b(%%c" "!firstname! %%a"
)

endlocal

आप यह सुनिश्चित करने के लिए कि यह उम्मीद के echoमुताबिक renकाम करता है, पहले डालकर, टेस्ट रन की इच्छा हो सकती है।

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