การเปลี่ยนนามสกุลไฟล์ทั้งหมดในโฟลเดอร์ด้วยคำสั่งเดียวบน Windows


145

ฉันจะใช้บรรทัดคำสั่ง Windows เพื่อเปลี่ยนนามสกุลไฟล์เป็นพันไฟล์ได้*****.jpgอย่างไร


คุณหมายถึงอะไรโดยการเปลี่ยนนามสกุลทั้งหมดเป็น *****. jpg หมายความว่าทุกนามสกุลไฟล์เป็น jpg หรือไม่? ถ้าใช่ใช้ Ren * .jpg
Imran Rizvi

ระบบปฏิบัติการอะไร คุณต้องการเปลี่ยนพวกเขาอย่างไร?
bryce

@bryce ปิดระบบปฏิบัติการ windows แน่นอน ..
Berker Yüceer

คำตอบ:


298

คุณสามารถใช้ren(เช่นในการเปลี่ยนชื่อ ):

ren *.XXX *.YYY

และแน่นอนเปลี่ยน XXX และ YYY สำหรับส่วนขยายที่เหมาะสม มันจะเปลี่ยนจาก XXX เป็น YYY หากคุณต้องการเปลี่ยนส่วนขยายทั้งหมดให้ใช้สัญลักษณ์แทนอีกครั้ง:

ren *.* *.YYY

วิธีหนึ่งในการทำให้งานนี้เกิดขึ้นซ้ำ ๆ คือการใช้FORคำสั่ง มันสามารถใช้กับ/Rตัวเลือกในการใช้คำสั่งซ้ำกับไฟล์ที่ตรงกัน ตัวอย่างเช่น:

for /R %x in (*.txt) do ren "%x" *.renamed

จะเปลี่ยน.txtส่วนขยายทั้งหมดเป็น.renamedแบบเรียกซ้ำโดยเริ่มต้นในไดเรกทอรีปัจจุบัน %xเป็นตัวแปรที่เก็บชื่อไฟล์ที่ตรงกัน

และเนื่องจากคุณมีไฟล์หลายพันไฟล์โปรดรอจนกว่าเคอร์เซอร์จะเริ่มกะพริบอีกครั้งเพื่อระบุว่าทำงานเสร็จแล้ว

หมายเหตุ: ใช้งานได้เฉพาะบน cmd จะไม่ทำงานกับ Powershell หรือ Bash


* .XXX จะเปลี่ยนไฟล์สำหรับส่วนขยายนั้น (หมายถึงมันจะเปลี่ยนชื่อไฟล์ทั้งหมดที่มีนามสกุล XXX)
Habib

@ keyser5053 ฉันสามารถรับรายงานเกี่ยวกับการกระทำที่นี่ด้วยการใช้งานได้ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txtหรือไม่
Berker Yüceer

และวิธีการเกี่ยวกับการแทนที่แบบเรียกซ้ำใน sub-dirs ทั้งหมด?
NightElfik

@NightElfik ฉันได้เพิ่มตัวอย่างแบบเรียกซ้ำที่ใช้FOR
keyser

4
ฉันไม่สามารถใช้งานได้ใน PowerShell แต่ใช้งานได้ดีใน cmd.exe เพียงเพื่อให้คนอื่นรู้
hazzey

20

บน CMD

ชนิด

ren *.* *.jpg

. จะเลือกไฟล์ทั้งหมดและเปลี่ยนชื่อเป็น * (ชื่อที่เคยมี) รวมถึงนามสกุลเป็น jpg


10

พฤติกรรมการเปลี่ยนชื่อบางครั้ง 'น้อยกว่าสัญชาตญาณ'; ตัวอย่างเช่น...

ren * .THM * .jpg จะเปลี่ยนชื่อไฟล์ THM ของคุณให้มีนามสกุลเป็น. jpg เช่น: GEDC003.THM จะเป็น GEDC003.jpg

ren * .THM * b.jpg จะเปลี่ยนชื่อไฟล์ THM ของคุณเป็น * .THMb.jpg เช่น: GEDC004.THM จะกลายเป็น GEDC004.THMb.jpg

ren * .THM * .b.jpg จะเปลี่ยนชื่อไฟล์ THM ของคุณเป็น * .b.jpg เช่น: GEDC005.THM จะกลายเป็น GEDC005.b.jpg


คำอธิบายที่ดี
Arslan Ahmad

7

หมายเหตุ: ไม่ใช่สำหรับ Windows

การใช้ ren-1.0 แบบฟอร์มที่ถูกต้องคือ:

"ren *.*" "#2.jpg"

จาก man ren

รูปแบบการเปลี่ยนเป็นชื่อไฟล์อื่นที่มีดัชนีไวด์การ์ดในตัวซึ่งแต่ละตัวประกอบด้วยอักขระ # ตามด้วยตัวเลขจาก 1 ถึง 9 ในชื่อใหม่ของไฟล์ที่ตรงกันดัชนีตัวแทนจะถูกแทนที่ด้วยอักขระจริงที่ตรงกับที่อ้างอิง สัญลักษณ์แทนในชื่อไฟล์ดั้งเดิม

และ

โปรดทราบว่าโดยปกติเชลล์จะขยาย wildcards * และ? ซึ่งในกรณีของ ren ไม่พึงปรารถนา ดังนั้นในกรณีส่วนใหญ่จำเป็นต้องใส่รูปแบบการค้นหาในเครื่องหมายคำพูด


ฉันต้องใช้ # 1: ren "* .csv" "# 1.json"
elmalto

1
man ren? คำถามคือเกี่ยวกับ Windows cmd/ สิ่งเหล่านี้ให้manหน้าเว็บหรือไม่ อะไรคือสิ่งที่ren-1.0เราสามารถดูmanหน้าเว็บในบริบท?
underscore_d


3

สำหรับผู้ที่ต้องการทำสิ่งนี้ในไฟล์แบตช์รหัสนี้ใช้งานได้:

FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png

ในตัวอย่างนี้ไฟล์ทั้งหมดที่มีนามสกุล. jpg ในไดเรกทอรี C: \ Users \ jonathan \ Desktop \ test เปลี่ยนเป็น * .png


2

เปลี่ยนชื่อนามสกุลไฟล์หลายไฟล์:

คุณต้องการเปลี่ยนringtone1.mp3, ringtone2.mp3เพื่อringtone1.wav,ringtone2.wav

นี่คือวิธีทำ: ฉันอยู่ในไดรฟ์ d พร้อมรับคำสั่ง (CMD) ดังนั้นฉันใช้:

d:\>ren *.* *.wav 

นี่เป็นเพียงตัวอย่างของนามสกุลไฟล์คุณสามารถใช้นามสกุลไฟล์ประเภทใดก็ได้เช่น WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT สิ่งนี้ขึ้นอยู่กับระบบปฏิบัติการของคุณ

และเนื่องจากคุณมีไฟล์หลายพันไฟล์โปรดรอจนกว่าเคอร์เซอร์จะเริ่มกะพริบอีกครั้งเพื่อระบุว่าทำงานเสร็จแล้ว


1

ในกรณีของฉันฉันมีไดเรกทอรีที่มีไฟล์มากกว่า 800 ไฟล์ซึ่งลงท้ายด้วย.StoredProcedure.sql(มีสคริปต์ด้วยSSMS )

โซลูชันที่โพสต์ด้านบนไม่ทำงาน แต่ฉันมากับสิ่งนี้:

(ขึ้นอยู่กับคำตอบของการเขียนโปรแกรมแบทช์ - รับเส้นทางสัมพัทธ์ของไฟล์ )

@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
  set B=%%f
  set B=!B:%CD%\=!
  ren "!B!" "!B:.StoredProcedure=!"
)

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


2
แทนที่setคำสั่งสองคำของคุณด้วยคำสั่งเดียวนี้: set "B=%%~nxf". ( %%~nxfคือn ame และ e x tension ของ%%f) %cd%อาจไม่ถูกต้องเมื่อคุณทำซ้ำ
เตฟาน

1

ฉันรู้ว่ามันเก่ามาก แต่ฉันได้ลงจอดแล้วและคำตอบที่ให้ไม่ได้ผลสำหรับฉันกับ powershell ดังนั้นหลังจากการค้นหาพบวิธีนี้

ที่จะทำใน powershell

Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}

เครดิตไปที่http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/


0

ทางเลือกอื่นในการเปลี่ยนชื่อไฟล์โดยใช้แพ็กเกจrenamer npm

ด้านล่างเป็นตัวอย่างของการเปลี่ยนชื่อนามสกุลไฟล์

renamer -d --path-element ext --find ts --replace js *

0

สิ่งที่ใช้ได้ผลสำหรับฉันคือสิ่งนี้ (ซีดีไปยังโฟลเดอร์ก่อน):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.