在Windows上使用一个命令更改文件夹中所有文件的扩展名


145

如何使用Windows命令行将数千个文件的扩展名更改为*****.jpg


将所有扩展名更改为*****。jpg是什么意思?这是否意味着jpg的所有文件扩展名?如果是,请使用ren * .jpg
Imran Rizvi 2012年

什么操作系统?您想如何更改它们?
布莱斯2012年

@bryce偏离航道的windows操作系统..
的BerkerYüceer

Answers:


298

您可以使用ren(就像在named中一样):

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 2012年

@ keyser5053还可以获取有关使用此处所做操作的报告ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt吗?
BerkerYüceer2012年

那么所有子目录中的递归替换又如何呢?
NightElfik 2014年

@NightElfik我添加了一个递归示例,该示例使用FOR
keyer

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的数字。在匹配文件的新名称中,通配符索引将替换为与引用的匹配的实际字符。原始文件名中的通配符。

请注意,壳通常会扩展通配符*和?,这在ren的情况下是不可取的。因此,在大多数情况下,有必要将搜索模式用引号引起来。


我不得不使用#1:ren“ * .csv”“#1.json”
elmalto 2015年

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

在此示例中,C:\ Users \ jonathan \ Desktop \ test目录中所有带有.jpg扩展名的文件都更改为* .png。


2

重命名多个文件扩展名:

你想改变ringtone1.mp3ringtone2.mp3ringtone1.wavringtone2.wav

这是这样做的方法:我在命令提示符(CMD)的d驱动器中,因此我使用:

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Ñ AME和e X的张力%%f)。%cd%递归执行时可能无效。
斯蒂芬


0

使用重命名程序npm包重命名文件的另一种方法。

以下是重命名文件扩展名的示例

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

0

对我有用的是这个(首先将CD放入文件夹):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.