ฉันจะค้นหาและแทนที่อักขระในชื่อไฟล์ใน Windows 7 โดยใช้ Explorer ได้อย่างไร


16

ฉันต้องการแทนที่อักขระขีดล่างทั้งหมด ( _) ด้วยช่องว่าง ( ) ในชื่อไฟล์

ฉันจะทำสิ่งนี้ได้อย่างรวดเร็วเมื่อฉันมี_ตัวละครจำนวนมากที่จะแทนที่?


4
ตามคำตอบที่ระบุมี / ไม่มี / วิธีการทำเช่นนี้ใน Explorer คุณต้องมีสคริปต์หรือแบตช์ไฟล์เปลี่ยนชื่อ
Shinrai

คำตอบ:


20

vbScript ควรทำเพื่อคุณ สร้างไฟล์ชื่อ "rename_underscores.vbs" ที่มีสิ่งต่อไปนี้

Set objFso = CreateObject("Scripting.FileSystemObject")
Set Folder = objFSO.GetFolder("c:\test\")

For Each File In Folder.Files
    sNewFile = File.Name
    sNewFile = Replace(sNewFile,"_"," ")
    if (sNewFile<>File.Name) then 
        File.Move(File.ParentFolder+"\"+sNewFile)
    end if

Next

ตรวจสอบว่าชื่อโฟลเดอร์ถูกต้อง (ในตัวอย่างฉันใช้ c: \ test) จากนั้นดับเบิลคลิกที่ไฟล์ของคุณเพื่อทำการเปลี่ยนชื่อ


โปรดทราบว่าการทำงานแบบเดียวกันกับโฟลเดอร์โดยใช้ 'Folder.SubFolders' แทน 'Folder.Files'
Max Hohenegger

ทำงานอย่างสมบูรณ์แบบเพียงแค่ต้องดูแลเส้นทาง +1 ขอบคุณ
ราชา

4

ผมขอแนะนำให้ใช้เครื่องมือของบุคคลที่ 3 เช่นกลุ่มเปลี่ยนชื่อยูทิลิตี้ ฟรีและมีตัวติดตั้งน้อยกว่า 1 MB


1
เกิดอะไรขึ้นถ้าชื่อไฟล์คือ "this_is_a_test.ext"
seanyboy

1
Bulk Rename Utility เป็นแอพพลิเคชั่นที่ยอดเยี่ยม มันหลากหลายมากและฉันไม่คิดว่าคุณจะประสบความสำเร็จเช่นเดียวกันกับ Explorer ได้
Alex Angelico

คำสั่ง dos จะซับซ้อนกว่านั้นเล็กน้อย ฉันจะเยาะเย้ย
RJFalconer

3

สิ่งนี้อยู่ภายในขอบเขตของไฟล์ dos bat สร้างไฟล์ bat (ใหม่ -> ไฟล์ข้อความเปลี่ยนชื่อนามสกุลเป็น. bat) จากนั้นคัดลอกส่วนสีฟ้าด้านล่างลงไป

ฉันจะแบ่งมันออกเป็นส่วน ๆ และอธิบายสิ่งที่กำลังทำอยู่


พิมพ์สถานะปัจจุบันของไดเรกทอรีเพื่อเปรียบเทียบในภายหลัง

dir /b

แสดงรายการไฟล์ในไดเรกทอรีจากนั้นสำหรับไฟล์ทั้งหมดที่มีเครื่องหมายขีดเส้นใต้และลงท้ายด้วย. txt ให้เรียก ProcessFile

for %%f in (*_*.txt) do call :ProcessFile %%f
goto :finished

ไวยากรณ์ "str =% str: x = y%" แทนที่อินสแตนซ์ของ x ด้วย y ในกรณีนี้เรากำลังแทนที่ "_" โดยไม่มีอะไร

:ProcessFile
set str=%1
rename %1 %str:_=%
goto :eof

แค่นั้นแหละ!

ตอนนี้มันเพิ่งพิมพ์สิ่งที่เปลี่ยนแปลงเพื่อให้เราสามารถยืนยันว่ามันทำงานได้ตามที่คาดไว้;

:finished
echo ----
dir /b

ผลลัพธ์ (ไม่ใช่ส่วนหนึ่งของไฟล์ bat)

baz_ing.txt
big_rawr.foo
foo_bar.txt
multiple_underscores_test.txt
----
bazing.txt
big_rawr.foo
foobar.txt
multipleunderscorestest.txt

2

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

cd "C:\Users\MyName\Documents\MyDirectory"
Dir | Rename-Item –NewName { $_.name –replace "_"," " }

เพียง แต่อย่าลืมแทนที่ "C: \ Users \ MyName \ Documents \ MyDirectory" ด้วยพา ธ ไปยังไดเรกทอรีของคุณ

สำหรับรายละเอียดเพิ่มเติมและตัวเลือกอื่น ๆ รวมถึงบางสิ่งที่คุณสามารถทำได้โดยใช้เพียง Explorer ดูที่นี่: http://www.howtogeek.com/111859/how-to-batch-rename-files-in-windows-4-ways-howto การเปลี่ยนชื่อ-หลายไฟล์ /


2

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

ruby bren.rb *_* "_/ "

ฉันมีการตั้งค่าสภาพแวดล้อม windows ของฉันในลักษณะที่ bren.rb สามารถเรียกใช้งานได้จากไดเรกทอรีใด ๆ



1

สิ่งนี้ไม่ได้ตอบคำถามอย่างชัดเจน ('.. ใน Explorer') แต่ฉันพบซอฟต์แวร์ที่มีประโยชน์ที่สุดที่จะทำคือAdobe Bridge (ฟรี)

  1. เลือกไฟล์ทั้งหมดใน Bridge
  2. คลิกขวา> เปลี่ยนชื่อแบทช์

โบนัสเพิ่มเติม: รองรับ Regex!

สกรีนช็อต

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