Thay đổi tất cả các phần mở rộng của tệp trong một thư mục bằng một lệnh trên Windows


145

Làm cách nào tôi có thể sử dụng dòng lệnh Windows để thay đổi phần mở rộng của hàng ngàn tệp thành *****.jpg?


ý bạn là gì khi thay đổi tất cả các phần mở rộng dưới dạng *****. jpg? nó có nghĩa là tất cả các phần mở rộng tập tin để jpg? nếu có sử dụng ren . * .jpg
Imran Rizvi

Hệ điều hành gì? Bạn muốn thay đổi chúng như thế nào?
bryce

@bryce tắt hệ điều hành windows ..
Berker Yüceer

Câu trả lời:


298

Bạn có thể sử dụng ren(như đổi tên ):

ren *.XXX *.YYY

Và tất nhiên, chuyển đổi XXX và YYY cho các tiện ích mở rộng phù hợp. Nó sẽ thay đổi từ XXX thành YYY. Nếu bạn muốn thay đổi tất cả các tiện ích mở rộng, chỉ cần sử dụng lại ký tự đại diện:

ren *.* *.YYY

Một cách để thực hiện công việc này một cách đệ quy là với FORlệnh. Nó có thể được sử dụng với /Rtùy chọn để áp dụng đệ quy một lệnh cho các tệp phù hợp. Ví dụ:

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

sẽ thay đổi tất cả các .txtphần mở rộng thành .renamedđệ quy, bắt đầu trong thư mục hiện tại. %xlà biến chứa tên tệp phù hợp.

Và, vì bạn có hàng ngàn tệp, hãy đảm bảo đợi cho đến khi con trỏ bắt đầu nhấp nháy lần nữa cho biết nó đã hoạt động.

Lưu ý: điều này chỉ hoạt động trên cmd. Không làm việc trên Powershell hoặc Bash


* .XXX sẽ thay đổi các tệp cho tiện ích mở rộng cụ thể đó (có nghĩa là nó sẽ đổi tên tất cả các tệp có tiện ích mở rộng XXX)
Habib

@ Keyser5053 tôi cũng có thể nhận được báo cáo về hành động được thực hiện ở đây .. bằng cách sử dụng ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer

Và làm thế nào về thay thế đệ quy trong tất cả các thư mục con?
NightElfik

@NightElfik Tôi đã thêm một ví dụ đệ quy sử dụngFOR
keyer

3
Tôi không thể làm điều này hoạt động trong powershell, nhưng nó hoạt động tốt trong cmd.exe. Chỉ để người khác nhận thức được.
hazzey

20

trên CMD

kiểu

ren *.* *.jpg

. sẽ chọn tất cả các tệp và đổi tên thành * (tên chúng từng có) cộng với phần mở rộng thành jpg


10

Đổi tên hành vi đôi khi "ít hơn trực quan"; ví dụ...

ren * .THM * .jpg sẽ đổi tên các tệp THM của bạn để có phần mở rộng là .jpg. ví dụ: GEDC003.THM sẽ là GEDC003.jpg

ren * .THM * b.jpg sẽ đổi tên các tệp THM của bạn thành * .THMb.jpg. ví dụ: GEDC004.THM sẽ trở thành GEDC004.THMb.jpg

ren * .THM * .b.jpg sẽ đổi tên các tệp THM của bạn thành * .b.jpg ví dụ: GEDC005.THM sẽ trở thành GEDC005.b.jpg


lời giải thích hay
Arslan Ahmad

7

LƯU Ý: không dành cho Windows

Sử dụng ren-1.0, hình thức đúng là:

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

Từ man ren

Mẫu thay thế là một tên tệp khác có các chỉ mục ký tự đại diện được nhúng, mỗi ký tự bao gồm ký tự # theo sau là một chữ số từ 1 đến 9. Trong tên mới của tệp phù hợp, các chỉ mục ký tự đại diện được thay thế bằng các ký tự thực phù hợp với tham chiếu ký tự đại diện trong tên tệp gốc.

Lưu ý rằng shell thường mở rộng các ký tự đại diện * và ?, Trong trường hợp ren là không mong muốn. Vì vậy, trong hầu hết các trường hợp, cần phải đặt mẫu tìm kiếm trong dấu ngoặc kép.


Tôi đã phải sử dụng # 1: ren "* .csv" "# 1.json"
elmalto

1
man ren? Câu hỏi là về Windows / cmd. Bây giờ những người cung cấp mancác trang? Là gì ren-1.0và làm thế nào chúng ta có thể xem nó mantrang trong bối cảnh?
gạch dưới

5

thật đơn giản

ren *.* *.jpg

thử điều này trong dấu nhắc lệnh


3

Chỉ dành cho những người tìm kiếm để làm điều này trong các tệp bó, mã này đang hoạt động:

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

Trong ví dụ này, tất cả các tệp có phần mở rộng .jpg trong thư mục C: \ Users \ jonathan \ Desktop \ test được đổi thành * .png.


2

Đổi tên nhiều phần mở rộng tập tin:

Bạn muốn thay đổi ringtone1.mp3, ringtone2.mp3để ringtone1.wav,ringtone2.wav

Đây là cách để làm điều đó: Tôi đang ở trong ổ d trên dấu nhắc lệnh (CMD) vì vậy tôi sử dụng:

d:\>ren *.* *.wav 

Đây chỉ là một ví dụ về tiện ích mở rộng tệp, bạn có thể sử dụng bất kỳ loại tiện ích mở rộng tệp nào như WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT tùy thuộc vào hệ điều hành của bạn.

Và, vì bạn có hàng ngàn tệp, hãy đảm bảo đợi cho đến khi con trỏ bắt đầu nhấp nháy lần nữa cho biết nó đã hoạt động.


1

Trong trường hợp của tôi, tôi đã có một thư mục với hơn 800 tệp kết thúc bằng .StoredProcedure.sql(chúng được viết theo kịch bản với SSMS ).

Các giải pháp được đăng ở trên không hoạt động. Nhưng tôi đã nghĩ ra điều này:

(Dựa trên câu trả lời để lập trình hàng loạt - nhận đường dẫn tương đối của tệp )

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

Kịch bản trên loại bỏ chuỗi con .StoredProcedurekhỏi tên tệp. Tôi chắc chắn rằng nó có thể được điều chỉnh để bao gồm nhiều trường hợp hơn, yêu cầu đầu vào và nói chung chung hơn.


2
thay thế hai setlệnh của bạn bằng lệnh đơn này : set "B=%%~nxf". ( %%~nxfn ame và e x căng thẳng của %%f). %cd%có thể không hợp lệ, khi bạn thực hiện đệ quy.
Stephan

1

Tôi biết điều này đã quá cũ, nhưng tôi đã tìm đến nó và các câu trả lời được cung cấp không phù hợp với tôi trên powershell nên sau khi tìm kiếm đã tìm thấy giải pháp này

để làm điều đó trong powershell

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

tín dụng vào http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/


0

Một cách khác để đổi tên các tệp bằng cách sử dụng gói npm renamer .

dưới đây là một ví dụ về đổi tên phần mở rộng tập tin

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

0

Cái này làm việc cho tôi là cái này (cd vào thư mục trước):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.