สมมติว่าช่องว่างสอดคล้องกับตัวอย่างของคุณ (เช่นชื่อและนามสกุลไม่มีช่องว่าง) สิ่งนี้น่าจะใช้ได้
@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
มันแยกโดยเว้นวรรคและตัดเครื่องหมายจุลภาคออกจากนามสกุลของไดเรกทอรีทั้งหมดในไดเรกทอรีเดียวกันกับไฟล์แบทช์
หากชื่อสามารถมีช่องว่างจำเป็นต้องใช้การจัดการตัวคั่นบางตัว ฉันจะไปทำเรื่องนั้น
แก้ไข:
ไปเลย. การเล่นกับตัวคั่นหมายถึงชื่อแรกถูกล้อมรอบด้วยช่องว่างก่อนและหลังซึ่งต้องถูกตัดออก เพื่อเป็นหลักก็คาดว่าจะLastname
ตามมาด้วย,
ตามมาด้วยตามมาด้วย
Firstname
(whatever
ช่องว่างรอบ ๆ ชื่อมีความสำคัญ (และมีอยู่ในตัวอย่างของคุณ) ช่องว่างภายในชื่อทำงานได้ดี
@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
เพื่อให้แน่ใจว่าทำงานได้ตามที่คาดไว้