ฉันจะเปลี่ยนชื่อไฟล์เป็นจำนวนมากได้อย่างไร


126

ฉันมีพวงของชื่อไฟล์ที่มีรูปแบบที่และฉันต้องการที่จะลบหมายเลขจากด้านหน้าเพื่อฉันเพียงแค่มี99 - DescriptiveName.txtDescriptiveName.txt

ฉันจะทำสิ่งนี้ได้อย่างไร ฉันสามารถทำได้จากบรรทัดคำสั่งหรือมียูทิลิตี้ที่สามารถทำได้หรือไม่?

คำตอบ:


94

ฉันรู้ว่าในชื่อของคุณคุณพูดว่า "ใน dos" แต่ฉันได้รับความประทับใจที่คุณกำลังมองหาวิธีที่จะทำและสงสัยว่าเป็นวิธีที่ดีที่สุด

เครื่องมือที่ดีที่สุดแน่นอนฉันได้พบนี้คือกลุ่มเปลี่ยนชื่อยูทิลิตี้

ยูทิลิตี้เปลี่ยนชื่อเป็นกลุ่ม

มันไม่ใช่เครื่องมือบรรทัดคำสั่ง แต่มีเวอร์ชันบรรทัดคำสั่งหากคุณต้องการใช้อย่างนั้น

ฉันใช้เวอร์ชัน GUI มากและมีประสิทธิภาพมากเร็วและใช้งานง่ายมาก

โอ้และมันฟรีสำหรับใช้ส่วนตัว


น่าเสียดายที่เครื่องมือไม่ได้ฟรีสำหรับการใช้งานเชิงพาณิชย์ :(
AntonK

นั่นคือเหตุผลที่ฉันบอกว่ามันฟรีสำหรับใช้ส่วนตัว
Jim McKeeth

2
นี่เป็นเครื่องมือที่เร็วสุด ๆ มันแก้ไขปัญหาไฟล์ 6.000 ของฉันในไม่กี่วินาทีโดยใช้ logics ค้นหาและแทนที่หลาย ก็เหมือนกับการใช้ Notepad ++ แต่การแก้ไขไฟล์หลายพันไฟล์ ทางออกที่ดีขอบคุณ!
ถั่วลิสง

59

สคริปต์ PowerShell ขนาดเล็ก:

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

เมื่อรวมกับนิพจน์ทั่วไปที่ซับซ้อนมากขึ้นสิ่งนี้อาจกลายเป็นสิ่งที่ต้องการ

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

ซึ่งเปลี่ยนสิ่งต่าง ๆ เช่น '01 - Beginning.mp3 'เป็น' Beginning - 01.mp3 '

ใช้-WhatIfพารามิเตอร์เปิดRename-Itemเพื่อตรวจสอบการเปลี่ยนชื่อก่อนที่จะออก


1
@sysrqb โปรดค้นคว้าเพิ่มเติมอีกเล็กน้อย
Joey

การแทนที่ไม่ต้องการนิพจน์สตริงที่สองหรือไม่ คนที่สองมีสองคนคนแรกไม่มี ... -replace '\d+ - ',''. นอกจากนี้ฉันเชื่อว่าอันแรกดีกว่าเพียงแค่ถอดการเริ่มต้นใช้ regex แม้ว่าฉันเชื่อว่าคุณควรรวม ^ anchor ไว้ที่จุดเริ่มต้นของนิพจน์เพื่อให้ตรงกับชื่อที่ขึ้นต้นด้วยตัวเลขเท่านั้น
Xalorous

1
@Xalorous: เอาละคุณสามารถลองใช้ได้ -replaceสามารถมีเพียงหนึ่งอาร์กิวเมนต์ทางด้านขวาซึ่งในกรณีที่หนึ่งในสองคือปริยายสตริงว่างเปล่า
Joey

สิ่งนี้ช่วยฉัน .. ยูทิลิตี้เปลี่ยนชื่อเป็นกลุ่มเพิ่งล่มในขณะนี้และฉันพยายามแก้ไขปัญหาอื่น ๆ มากมาย นี่เป็นวิธีที่ดีกว่าสำหรับผู้ที่พอใจกับ regexp ขอบคุณมาก !!
Inkh Su Tesou

24

หากคุณต้องการใช้บรรทัดคำสั่ง windows (ถ้าคุณไม่ต้องการดาวน์โหลดบางอย่าง) คุณสามารถทำได้ดังนี้:

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

บรรทัดแรกจะแสดงรายการไฟล์เป็นไฟล์ชื่อ fileList.txt บรรทัดที่สองแยกชื่อในรายการออกเป็น 3 ส่วนคือ #, "-" และส่วนที่เหลือของชื่อ สำหรับแต่ละคำสั่งนั้นจะทำการเปลี่ยนชื่อ


2
ลบบรรทัดแรกเพื่อทำให้มันง่ายขึ้นและทำ:for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

ฉันรู้ว่ามันเก่า แต่ก็ยังเป็นคำตอบที่มั่นคง - เฉพาะ% l (% L) ควรเป็น% k (% K) [โทเค็นเพิ่มขึ้นจาก% i (% I) ดังนั้นฉัน, J, K ... ]
Donald Byrd

24

AntRenamerทำให้การกำหนดรูปแบบการเปลี่ยนชื่อทำได้ง่าย มีคนมากมายที่เตรียมไว้แล้ว (และมันให้ภาพตัวอย่างของการกระทำ):

AntRenamer

ฟรีสำหรับการใช้งานส่วนตัวและเชิงพาณิชย์


19

โรงเรียนเก่า:

คุณสามารถทำ DIR และเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์เช่นเดียวกับใน DIR * .TXT> TEMP.BAT

จากนั้นใช้เครื่องมือแก้ไขเพื่อนำสิ่งที่คุณไม่ต้องการและปรับเปลี่ยนส่วนที่คุณต้องการ เพิ่ม "@echo off" เป็นบรรทัดบนสุดบันทึกและเรียกใช้


ฉันได้รับการอ้างอิงหน้านี้จากปริญญาเอกเก่าในเรื่องนี้: dostips.com/DosCommandIndex.htm ; มันยอดเยี่ยมมากที่คุณสามารถทำได้กับ DOS เก่า (ดี?)!
nik

16

ตัวเลือกอื่น: Renamer ไฟล์ขนาดใหญ่

จะช่วยให้การได้อย่างง่ายดายเปลี่ยนชื่อหลายไฟล์และนามสกุลไฟล์ มันเร็วและง่ายมาก!

สำหรับผู้ใช้และนักพัฒนาขั้นสูงสามารถใช้นิพจน์ทั่วไปได้

ดูการทำงาน:

ป้อนคำอธิบายรูปภาพที่นี่


1
Btw เราจะเลือกให้มันเปิดไฟล์ทั้งหมดในโฟลเดอร์ย่อยได้อย่างไร? ฉันมีโฟลเดอร์รูทที่มีโฟลเดอร์ย่อย 50 โฟลเดอร์ (เรียกซ้ำ) และมีไฟล์หลายไฟล์อยู่ภายใน
Pacerier

1
@Pacerier ฉันคิดว่าตัวเลือกไฟล์ Java ไม่อนุญาต ฉันคิดว่าจะอนุญาตให้เลือกโฟลเดอร์และสามารถรวมการค้นหาแบบเรียกซ้ำ ฉันจะทราบและเพิ่มในการเปิดตัวในอนาคต!
IvanRF

13

ฉันใช้เครื่องมือเปลี่ยนชื่ออเนกประสงค์ของTotal Commander (ctrl + M) สำหรับสิ่งนี้ เครื่องมือที่มีประโยชน์ของพวกเขาหนึ่งในจำนวนที่มากเกินไปที่จะนับใช้งานง่ายและยังสามารถใช้นิพจน์และเทมเพลตปกติได้หากจำเป็น โอ้และแน่นอนว่าจะให้ภาพตัวอย่างก่อนที่จะทำการเปลี่ยนแปลงใด ๆ

นี่คือคำถามที่สามหรือสี่ที่ฉันตอบฉันแนะนำ Total Commander ... ฉันควรได้รับค่าคอมมิชชั่นจากพวกเขา ;-)


11

เครื่องมือที่ฉันได้รับความพึงพอใจกับการเป็นเปลี่ยนชื่อ นอกจากนี้ยังรองรับการบันทึกกฎการเปลี่ยนชื่อซึ่งเป็นประโยชน์กับฉันเช่นฉันหลายครั้งจะทำการเปลี่ยนชื่อเดียวกัน

ด้านล่างนี้เป็นตัวอย่างของวิธีการลบข้อความก่อนขีดกลางแรก แต่มีกฎอื่น ๆ มากมายที่คุณสามารถกำหนดได้

ป้อนคำอธิบายรูปภาพที่นี่


5

ฉันใช้Free Commander Portable (ฟรีแวร์) เพื่อผลดี:

  1. เลือกหรือนำทางไปยังไฟล์หรือไดเรกทอรีเพื่อเปลี่ยนชื่อ
  2. กด [Ctrl-M] (หรือไฟล์> เปลี่ยนชื่อหลายรายการ)
  3. กรอกข้อมูลในฟิลด์ตามความเหมาะสมกับสถานการณ์ของคุณ
  4. ตรวจสอบตัวอย่างแสดงสิ่งที่คุณคาดหวัง
  5. ไป!

4

สำหรับผู้ใช้ขั้นสูงและนักพัฒนาผมจะแนะนำRegexRenamer

สกรีนช็อต RegexRenamer

ข้อดี:

  • UI ที่ง่ายมาก
  • นิพจน์ทั่วไปที่ผู้พัฒนาคุ้นเคย
  • GPLv2;

คอนของ:

  • มันไม่ใช่บรรทัดคำสั่ง! :)

ไม่สามารถทำให้มันทำงานซ้ำสำหรับโฟลเดอร์ย่อยทั้งหมดของโฟลเดอร์ที่เลือก!
Luckylooke


3

ต่อไปนี้เป็นโซลูชันบรรทัดคำสั่ง --- โปรแกรม Java ที่ฉันเขียนโดยเฉพาะเพื่อให้ง่ายต่อการทำงานกับ "รูปแบบ" ในชื่อไฟล์ ฟรีและโอเพ่นซอร์สดังนั้นอย่าลังเลที่จะแก้ไข:

RenameWand
http://renamewand.sourceforge.net/

ตัวอย่างการใช้งานที่เกี่ยวข้อง:

วางทุกอย่าง"-"ไว้ข้างหน้าชื่อไฟล์:

java -jar RenameWand.jar  "<a> - <b>"  "<b>"

เตรียมหมายเลข 3 หลักให้กับชื่อไฟล์เรียงลำดับตามเวลาที่แก้ไขล่าสุด:

java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

จัดเรียงส่วนของชื่อไฟล์ใหม่และเปลี่ยนกรณี:

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"

3

ฉันค้นพบRenPhoric เมื่อประมาณหนึ่งเดือนที่แล้ว ดีเยี่ยม และก็ฟรี

ไม่มีส่วนต่อประสานที่ซับซ้อนและฉันสามารถเปลี่ยนชื่อได้อย่างรวดเร็วตามที่ต้องการ ความสามารถในการแสดงออกปกติ ยังไม่ได้ใช้อย่างอื่นอีก


2

ผมชอบ Cylog ของWildRename มันทรงพลัง แต่ใช้งานง่ายและมีคุณสมบัติมากมาย:

  1. รวดเร็ว
  2. การจัดการสตริง
  3. เคาน์เตอร์
  4. สัญลักษณ์
  5. นิพจน์ทั่วไป
  6. การแทน
  7. กรณีการแปลง
  8. การเข้าสู่ระบบ
  9. จำลอง (แสดงผลลัพธ์โดยไม่ใช้จริง)

ป้อนคำอธิบายรูปภาพที่นี่


2

เช่นเดียวกับ @zdan ด้านบนฉันทำสิ่งนี้โดยใช้บรรทัดคำสั่ง (โดยใช้ "cmd.exe" ใน Windows) มันใช้เวลาบาง tinkering สำหรับกรณีเฉพาะของฉัน แต่การวิจัยเล็กน้อยแก้ไขมัน

เช่น zdan ฉันส่งออกรายการไปยังไฟล์ TXT จากนั้นใช้tokensและdelimsเปลี่ยนชื่อไฟล์ตามลำดับ ในกรณีของฉันฉันเริ่มด้วยรายการไฟล์ที่ชื่อดังนี้

name-01-02-2012.csv

ฉันต้องการให้ส่วนวันที่ของไฟล์อยู่ในลำดับ y / m / d ด้วยส่วน "ชื่อ" ที่ส่วนท้ายดังนั้นมันจะอ่านดังนี้:

2012-01-02-name.csv

ในการทำเช่นนี้ฉันใช้รหัสต่อไปนี้ โปรดทราบว่าเมื่อดำเนินการด้วยวิธีนี้ทุกส่วนของชื่อไฟล์จะได้รับการพิจารณารวมถึงส่วนขยายของ ".csv" นั่นทำให้ฉันรู้สึกผิดครั้งแรก

dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m

tokensเป็น "ชิ้นส่วน" ของชื่อไฟล์ที่delimsมีตัวคั่น โปรดทราบว่าในกรณีของฉันฉันมีตัวคั่น 2 ตัว (เส้นประและจุด)

ฉันไม่สนใจแอพ "เปลี่ยนชื่อเป็นกลุ่ม" เป็นการส่วนตัว ดังที่คนอื่น ๆ พูดถึง GUI นั้นเลวร้ายและไม่ง่ายนัก ด้วยการวิจัยเพียงเล็กน้อยและการเขียนโค้ดอย่างง่ายสิ่งเหล่านี้สามารถทำได้อย่างมีประสิทธิภาพและรวดเร็ว


2

เครื่องมือตลกชื่อและบรรทัดคำสั่งที่ทรงพลังมากใช้งานง่ายและรวดเร็ว "ค้นหาและแทนที่ข้อความ" FART http://fart-it.sourceforge.net/ ผลงานที่ยอดเยี่ยม! สามารถเปลี่ยนชื่อคำในไฟล์ txt ได้เช่นกัน

การใช้งาน

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes

รายละเอียดเพิ่มเติม? มันเปลี่ยนชื่อไฟล์หรือไม่
vonbrand

ใช่-fตัวเลือกตามที่ระบุไว้
user1016274

2

Multi rename script เป็นทางเลือกโอเพนซอร์ซสำหรับเครื่องมือ Multi Commanders Multi Rename ซึ่งคุณสามารถขับผ่านสคริปต์ได้ มันสามารถใช้ปลั๊กอิน TC สำหรับข้อมูลเมตาดาต้า

https://code.google.com/p/multi-rename-script/ http://multi-rename-script.googlecode.com/svn/trunk/docs/res/MRS.PNG


2
@ ปิดเสียง
เปิดใช้งาน setloc ล่าช้าขยาย
ตั้ง X = 5
ตั้ง FOLDER_PATH =
pushd% FOLDER_PATH%
สำหรับ %% f ใน (*) ทำถ้า %% f neq% ~ nx0 (
    ตั้งค่า "ชื่อไฟล์ = %% ~ nf"
    ตั้ง "ชื่อไฟล์ =! ชื่อไฟล์: ~% X%!"
    ren "%% f" "! ชื่อไฟล์! %% ~ xf"
)
popd

บันทึกสิ่งนี้ในแบตช์ไฟล์และเรียกใช้


นี่เป็นสิ่งที่ดี แต่ฉันจะทำให้ X เป็นตัวแปรได้อย่างไร (ผ่านเป็นพารามิเตอร์)
Kangkan

@ Kangkan เช่นนี้:set /p "X=Enter the value for X: "
Kidquick

1

ฉันใช้กระดานดำเพื่อจัดการหลักสูตรในมหาวิทยาลัย เมื่อฉันดาวน์โหลดการมอบหมายจำนวนมาก (ใน Blackboard ให้คลิกที่ด้านบนของคอลัมน์การให้คะแนนแล้ว "การดาวน์โหลดไฟล์การมอบหมาย" Blackboard เพิ่มสิ่งพิเศษมากมายให้กับชื่อไฟล์ - ทำให้ชื่อไฟล์ยาวเกินไปที่จะใช้งานได้บน Windows

นี่คือสิ่งที่พวกเขาดูเหมือน:

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

และนี่คือสิ่งที่ฉันต้องการ

studentname.docx

ดังนั้นฉันจึงใช้วิธีการที่ @zdan และ @ gtr1971 แนะนำโดยการเปิดหน้าต่างคำสั่งในโฟลเดอร์ที่มีไฟล์อยู่ภายใน (CMD.EXE) จากนั้นรันคำสั่งนี้เพื่อใส่ชื่อไฟล์ทั้งหมดในเอกสาร

dir /b >filelist.txt

แก้ไขเอกสารและลบชื่อโฟลเดอร์ ฯลฯ

ใช้คำสั่งนี้เพื่อแทนที่ชื่อไฟล์ที่เพิ่มเข้ามาของ Blackboard ด้วยชื่อผู้ใช้และนามสกุลไฟล์

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

หวังว่านี่จะช่วยคนอื่นเช่นกัน


1

นี่เป็นอีกโปรแกรมง่ายๆที่เรียกว่า File Attribute Changer ซึ่งคุณสามารถใช้เพื่อเปลี่ยนชื่อไฟล์ มันเป็นโปรแกรมแบบพกพาคุณจึงสามารถพกพาไปไว้ในไดรฟ์ USB ได้

http://www.softpedia.com/get/Desktop-Enhancements/Other-Desktop-Enhancements/File-Attribute-Changer.shtml


1

ฉันได้พัฒนาโปรแกรมอรรถประโยชน์บรรทัดคำสั่ง JScript / batch แบบผสมที่เรียกว่า JREN.BATซึ่งสามารถเปลี่ยนชื่อไฟล์หรือโฟลเดอร์โดยทำการค้นหานิพจน์ปกติและแทนที่ชื่อ มันเป็นสคริปต์ที่บริสุทธิ์ที่จะทำงานบนเครื่อง Windows ใด ๆ จาก XP ไปข้างหน้า เอกสารแบบเต็มจะถูกฝังอยู่ภายในสคริปต์

สมมติว่า JREN.BAT อยู่ในไดเรกทอรีปัจจุบันของคุณหรือดีกว่ายังที่ใดที่หนึ่งในเส้นทางของคุณจากนั้นงานเปลี่ยนชื่อของคุณจะกลายเป็นเรื่องเล็กน้อย

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

หรือ

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

มีตัวเลือกมากมายรวมถึง/Sตัวเลือกที่ดำเนินการเปลี่ยนชื่อซ้ำในไดเรกทอรีย่อย


0

หากคุณต้องการพลังที่จริงจังและยินดีจ่ายเงิน ... PowerGrepเป็นหนึ่งในเครื่องมือที่ทรงพลังและหลากหลายที่สุดในตลาด ... คุณสามารถเปลี่ยนชื่อเกือบทุกอย่างด้วย PowerGrep ... แม้แต่การค้นหาแบบไบนารีและแทนที่ ... มันสร้างขึ้นโดย RegEx คุรุม.ค. Goyvaerts

ป้อนคำอธิบายรูปภาพที่นี่


ยูทิลิตี้นี้มีราคาแพงมาก ...
Wizard79

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