ฉันมีพวงของชื่อไฟล์ที่มีรูปแบบที่และฉันต้องการที่จะลบหมายเลขจากด้านหน้าเพื่อฉันเพียงแค่มี99 - DescriptiveName.txt
DescriptiveName.txt
ฉันจะทำสิ่งนี้ได้อย่างไร ฉันสามารถทำได้จากบรรทัดคำสั่งหรือมียูทิลิตี้ที่สามารถทำได้หรือไม่?
ฉันมีพวงของชื่อไฟล์ที่มีรูปแบบที่และฉันต้องการที่จะลบหมายเลขจากด้านหน้าเพื่อฉันเพียงแค่มี99 - DescriptiveName.txt
DescriptiveName.txt
ฉันจะทำสิ่งนี้ได้อย่างไร ฉันสามารถทำได้จากบรรทัดคำสั่งหรือมียูทิลิตี้ที่สามารถทำได้หรือไม่?
คำตอบ:
ฉันรู้ว่าในชื่อของคุณคุณพูดว่า "ใน dos" แต่ฉันได้รับความประทับใจที่คุณกำลังมองหาวิธีที่จะทำและสงสัยว่าเป็นวิธีที่ดีที่สุด
เครื่องมือที่ดีที่สุดแน่นอนฉันได้พบนี้คือกลุ่มเปลี่ยนชื่อยูทิลิตี้
มันไม่ใช่เครื่องมือบรรทัดคำสั่ง แต่มีเวอร์ชันบรรทัดคำสั่งหากคุณต้องการใช้อย่างนั้น
ฉันใช้เวอร์ชัน GUI มากและมีประสิทธิภาพมากเร็วและใช้งานง่ายมาก
โอ้และมันฟรีสำหรับใช้ส่วนตัว
สคริปต์ 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
เพื่อตรวจสอบการเปลี่ยนชื่อก่อนที่จะออก
... -replace '\d+ - ',''
. นอกจากนี้ฉันเชื่อว่าอันแรกดีกว่าเพียงแค่ถอดการเริ่มต้นใช้ regex แม้ว่าฉันเชื่อว่าคุณควรรวม ^ anchor ไว้ที่จุดเริ่มต้นของนิพจน์เพื่อให้ตรงกับชื่อที่ขึ้นต้นด้วยตัวเลขเท่านั้น
-replace
สามารถมีเพียงหนึ่งอาร์กิวเมนต์ทางด้านขวาซึ่งในกรณีที่หนึ่งในสองคือปริยายสตริงว่างเปล่า
หากคุณต้องการใช้บรรทัดคำสั่ง windows (ถ้าคุณไม่ต้องการดาวน์โหลดบางอย่าง) คุณสามารถทำได้ดังนี้:
dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l
บรรทัดแรกจะแสดงรายการไฟล์เป็นไฟล์ชื่อ fileList.txt บรรทัดที่สองแยกชื่อในรายการออกเป็น 3 ส่วนคือ #, "-" และส่วนที่เหลือของชื่อ สำหรับแต่ละคำสั่งนั้นจะทำการเปลี่ยนชื่อ
AntRenamerทำให้การกำหนดรูปแบบการเปลี่ยนชื่อทำได้ง่าย มีคนมากมายที่เตรียมไว้แล้ว (และมันให้ภาพตัวอย่างของการกระทำ):
ฟรีสำหรับการใช้งานส่วนตัวและเชิงพาณิชย์
โรงเรียนเก่า:
คุณสามารถทำ DIR และเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์เช่นเดียวกับใน DIR * .TXT> TEMP.BAT
จากนั้นใช้เครื่องมือแก้ไขเพื่อนำสิ่งที่คุณไม่ต้องการและปรับเปลี่ยนส่วนที่คุณต้องการ เพิ่ม "@echo off" เป็นบรรทัดบนสุดบันทึกและเรียกใช้
ตัวเลือกอื่น: Renamer ไฟล์ขนาดใหญ่
จะช่วยให้การได้อย่างง่ายดายเปลี่ยนชื่อหลายไฟล์และนามสกุลไฟล์ มันเร็วและง่ายมาก!
สำหรับผู้ใช้และนักพัฒนาขั้นสูงสามารถใช้นิพจน์ทั่วไปได้
ดูการทำงาน:
ฉันใช้เครื่องมือเปลี่ยนชื่ออเนกประสงค์ของTotal Commander (ctrl + M) สำหรับสิ่งนี้ เครื่องมือที่มีประโยชน์ของพวกเขาหนึ่งในจำนวนที่มากเกินไปที่จะนับใช้งานง่ายและยังสามารถใช้นิพจน์และเทมเพลตปกติได้หากจำเป็น โอ้และแน่นอนว่าจะให้ภาพตัวอย่างก่อนที่จะทำการเปลี่ยนแปลงใด ๆ
นี่คือคำถามที่สามหรือสี่ที่ฉันตอบฉันแนะนำ Total Commander ... ฉันควรได้รับค่าคอมมิชชั่นจากพวกเขา ;-)
ฉันใช้Free Commander Portable (ฟรีแวร์) เพื่อผลดี:
สำหรับผู้ใช้ขั้นสูงและนักพัฒนาผมจะแนะนำRegexRenamer
ข้อดี:
คอนของ:
ต่อไปนี้เป็นโซลูชันบรรทัดคำสั่ง --- โปรแกรม 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>"
ฉันค้นพบRenPhoric เมื่อประมาณหนึ่งเดือนที่แล้ว ดีเยี่ยม และก็ฟรี
ไม่มีส่วนต่อประสานที่ซับซ้อนและฉันสามารถเปลี่ยนชื่อได้อย่างรวดเร็วตามที่ต้องการ ความสามารถในการแสดงออกปกติ ยังไม่ได้ใช้อย่างอื่นอีก
เช่นเดียวกับ @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 นั้นเลวร้ายและไม่ง่ายนัก ด้วยการวิจัยเพียงเล็กน้อยและการเขียนโค้ดอย่างง่ายสิ่งเหล่านี้สามารถทำได้อย่างมีประสิทธิภาพและรวดเร็ว
เครื่องมือตลกชื่อและบรรทัดคำสั่งที่ทรงพลังมากใช้งานง่ายและรวดเร็ว "ค้นหาและแทนที่ข้อความ" 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
-f
ตัวเลือกตามที่ระบุไว้
Multi rename script เป็นทางเลือกโอเพนซอร์ซสำหรับเครื่องมือ Multi Commanders Multi Rename ซึ่งคุณสามารถขับผ่านสคริปต์ได้ มันสามารถใช้ปลั๊กอิน TC สำหรับข้อมูลเมตาดาต้า
@ ปิดเสียง เปิดใช้งาน setloc ล่าช้าขยาย ตั้ง X = 5 ตั้ง FOLDER_PATH = pushd% FOLDER_PATH% สำหรับ %% f ใน (*) ทำถ้า %% f neq% ~ nx0 ( ตั้งค่า "ชื่อไฟล์ = %% ~ nf" ตั้ง "ชื่อไฟล์ =! ชื่อไฟล์: ~% X%!" ren "%% f" "! ชื่อไฟล์! %% ~ xf" ) popd
บันทึกสิ่งนี้ในแบตช์ไฟล์และเรียกใช้
set /p "X=Enter the value for X: "
ฉันใช้กระดานดำเพื่อจัดการหลักสูตรในมหาวิทยาลัย เมื่อฉันดาวน์โหลดการมอบหมายจำนวนมาก (ใน 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
หวังว่านี่จะช่วยคนอื่นเช่นกัน
นี่เป็นอีกโปรแกรมง่ายๆที่เรียกว่า File Attribute Changer ซึ่งคุณสามารถใช้เพื่อเปลี่ยนชื่อไฟล์ มันเป็นโปรแกรมแบบพกพาคุณจึงสามารถพกพาไปไว้ในไดรฟ์ USB ได้
ฉันได้พัฒนาโปรแกรมอรรถประโยชน์บรรทัดคำสั่ง JScript / batch แบบผสมที่เรียกว่า JREN.BATซึ่งสามารถเปลี่ยนชื่อไฟล์หรือโฟลเดอร์โดยทำการค้นหานิพจน์ปกติและแทนที่ชื่อ มันเป็นสคริปต์ที่บริสุทธิ์ที่จะทำงานบนเครื่อง Windows ใด ๆ จาก XP ไปข้างหน้า เอกสารแบบเต็มจะถูกฝังอยู่ภายในสคริปต์
สมมติว่า JREN.BAT อยู่ในไดเรกทอรีปัจจุบันของคุณหรือดีกว่ายังที่ใดที่หนึ่งในเส้นทางของคุณจากนั้นงานเปลี่ยนชื่อของคุณจะกลายเป็นเรื่องเล็กน้อย
jren "^\d+[ -]+(.+)\.txt$" "$1" /i
หรือ
jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"
มีตัวเลือกมากมายรวมถึง/S
ตัวเลือกที่ดำเนินการเปลี่ยนชื่อซ้ำในไดเรกทอรีย่อย
หากคุณต้องการพลังที่จริงจังและยินดีจ่ายเงิน ... PowerGrepเป็นหนึ่งในเครื่องมือที่ทรงพลังและหลากหลายที่สุดในตลาด ... คุณสามารถเปลี่ยนชื่อเกือบทุกอย่างด้วย PowerGrep ... แม้แต่การค้นหาแบบไบนารีและแทนที่ ... มันสร้างขึ้นโดย RegEx คุรุม.ค. Goyvaerts