रिक्त स्थान मान लेना आपके उदाहरण (यानी 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
काम करता है, पहले डालकर, टेस्ट रन की इच्छा हो सकती है।