เปลี่ยนชื่อโฟลเดอร์เป็นชุดหรือไม่


0

นี่อาจเป็นงานที่แก้ไขได้ง่ายสุด ๆ แล้ว แต่:

ฉันมีโฟลเดอร์หลายชุดที่มี eBooks ในรูปแบบต่างๆ พวกเขามีรูปแบบชื่อโฟลเดอร์:

\Lastname, Firstname (n books)\

ฉันต้องการเปลี่ยนชื่อโฟลเดอร์แต่ละโฟลเดอร์ให้เป็นแบบง่าย ๆ

\Firstname Lastname\

ซึ่งฉันเดาว่าสามารถทำได้ด้วยไฟล์แบทช์ค่อนข้างง่าย แต่มันก็เป็นเวลานานมากที่ฉันต้องทำการวิเคราะห์สตริงเพื่อที่จะได้ไม่ต้องนึกถึงอีกต่อไป

ช่วยด้วย? ฉันใช้ Windows 7


คุณใช้ระบบปฏิบัติการอะไร?
พอล

@ พอล: ใช่แล้วนั่นจะเป็นข้อมูลที่เป็นประโยชน์ใช่มั้ย ;) Windows 7
Margaret

คำตอบ:


3

สมมติว่าช่องว่างสอดคล้องกับตัวอย่างของคุณ (เช่นชื่อและนามสกุลไม่มีช่องว่าง) สิ่งนี้น่าจะใช้ได้

@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เพื่อให้แน่ใจว่าทำงานได้ตามที่คาดไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.