批量修改文件扩展名

modify file extensions in batches 学习笔记

本文介绍下 Windows 系统下怎么批量修改文件的扩展名。

我工作中突然有个需求,有一大堆图片的 URL,我需要将他们都保存到本地。想着这个应该很简单, 找 GPT 写了个脚本。然后因为这些文件都没有扩展名,我用 Powertoys 里的重命名工具尝试了一阵,无法解决。我就又问了一下如何批量修改扩展名。有一说一,有了 GPT,遇到些个机械且重复的工作,搞个脚本解决一下真是舒服。

Sponsored links
Sponsored links

批量修改文件扩展名

GPT 效率还是高的,一下给了我 3 个系统的解决办法。

Windows 批处理文件

使用 Windows 的批处理文件可以快速批量修改扩展名。以下是一个示例脚本:

@echo off
setlocal enabledelayedexpansion
cd "文件所在的目录"
for %%f in (*.旧扩展名) do (
  ren "%%f" "%%~nf.新扩展名"
)
  • 文件所在的目录 替换为文件的实际路径。
  • 旧扩展名新扩展名 替换为你想要修改的文件扩展名。
  • 保存为 .bat 文件并运行即可批量修改扩展名。

这个稍微复杂了点,我记得只要在文件所属文件夹下新建个批处理文件,然后输入 ren *.png *.jpg 就好了。

Linux/MacOS Bash 脚本

如果你在 Linux 或 MacOS 上,你可以使用 bash 脚本来批量修改扩展名。

#!/bin/bash
cd "文件所在的目录"
for file in *.旧扩展名; do
mv -- "$file" "${file%.旧扩展名}.新扩展名"
done
  • 替换 文件所在的目录 为文件的路径,替换 旧扩展名新扩展名
  • 将脚本保存为 .sh 文件,使用 bash 脚本名.sh 来运行。

Python 脚本

import os

directory = "文件所在的目录"
old_extension = ".旧扩展名"
new_extension = ".新扩展名"

for filename in os.listdir(directory):
    if filename.endswith(old_extension):
        base = os.path.splitext(filename)[0]
        new_name = base + new_extension
        os.rename(os.path.join(directory, filename), os.path.join(directory, new_name))

没有扩展名的怎么办?

因为这些文件没有扩展名,所以上面的这个又不太试用。我又继续问,GPT 给出了答案。

1. 打开一个记事本,输入以下内容:

@echo off
cd "文件所在的目录"
for %%f in (*) do (
  if not "%%~xf"=="" (
    echo %%f 已有扩展名,跳过
  ) else (
    ren "%%f" "%%f.jpg"
  )
)

    2. 将 "文件所在的目录" 替换为你的文件所在的路径,例如 C:\Users\YourName\Desktop\YourFolder

    3. 将文件保存为 .bat 文件,例如 rename.bat

    4. 双击运行这个 .bat 文件,它会将该目录下所有没有扩展名的文件重命名为 .jpg

    这个脚本会检查哪些文件没有扩展名,然后将其重命名为 .jpg 文件。

    Rate this post
    订阅评论
    提醒
    guest
    0 评论
    内联反馈
    查看所有评论
    0
    希望看到您的想法,请您发表评论x