如何批量更改子文件夹中的文件扩展名

时间:2013-03-10 00:45:10

标签: batch-file cmd renaming

我是命令提示符的新手,并且仅在1天前开始使用它。

我在一个位置有一个文件夹,例如C:\Users\Administrator\Desktop\Images,在该文件夹中大约有650个子文件夹,每个子文件夹包含大约20个图像,混合了JPG和PNG。我正在寻找CMD的命令行,它将遍历所有子文件夹并将每个.png文件更改为.jpg文件。

我做了一些研究并发现了一些信息,但是很难理解,我仍然无法做到。我想保留文件名,但是将每个文件扩展名从.png更改为.jpg

据我所知,对于1个文件夹,该行与ren *.png *.jpg类似。但是,这不会对子文件夹进行更改。

1 个答案:

答案 0 :(得分:13)

如果我理解正确您只想将文件从.png重命名为.jpg,而不是转换它们,则可以使用以下批处理代码:

@ECHO OFF
PUSHD .
FOR /R %%d IN (.) DO (
    cd "%%d"
    IF EXIST *.png (
       REN *.png *.jpg
    )
)
POPD

更新:我找到了一个更好的解决方案here,你可以直接从命令行运行(如果在批处理文件中使用它,请使用%%f而不是%f):

FOR /R %f IN (*.png) DO REN "%f" *.jpg

请注意,上面将处理当前目录及其子目录。如有必要,您可以指定任意目录作为根目录,如下所示:

FOR /R "D:\path\to\PNGs" %f IN (*.png) DO REN "%f" *.jpg