如何用Batch脚本递归批量修改文件夹内所有文件的扩展名?
递归批量修改扩展名+U盘文件备份的Batch解决方案
嘿,完全不用挨个目录写ren命令这么麻烦!Batch里的for /r命令就是专门用来递归遍历目录的,配合文件复制命令,轻松搞定你的需求。下面给你完整的实现步骤和脚本:
1. 完整Batch脚本代码
@echo off setlocal enabledelayedexpansion :: 定义U盘盘符(请根据你的实际情况修改,比如D:、E:) set "U盘盘符=D:" :: 定义桌面备份目录 set "备份目录=%USERPROFILE%\Desktop\U盘备份" :: 创建备份目录(如果不存在的话) if not exist "%备份目录%" ( mkdir "%备份目录%" echo 已创建备份目录:%备份目录% ) :: 递归复制U盘内所有文件到备份目录 echo 开始复制U盘文件到桌面... xcopy "%U盘盘符%\*" "%备份目录%\" /E /H /C /Y echo 文件复制完成! :: 递归将备份目录下所有.bat文件改为.txt echo 开始批量修改.bat文件扩展名... for /r "%备份目录%" %%f in (*.bat) do ( ren "%%f" "%%~nf.txt" echo 已修改:"%%f" → "%%~dpnf.txt" ) echo 扩展名修改完成! pause
2. 关键命令解释
xcopy参数说明:/E:递归复制所有子目录,包括空目录/H:复制隐藏文件和系统文件(避免漏掉U盘里的隐藏内容)/C:遇到错误时继续复制,不会中途停止/Y:覆盖已存在的文件时不提示
for /r递归遍历:/r "%备份目录%":从指定的备份目录开始,递归遍历所有子目录%%f:代表遍历到的每个.bat文件的完整路径%%~nf:提取文件的文件名(不含扩展名),这样就能把xxx.bat精准改成xxx.txt
3. 使用注意事项
- 记得把脚本里的
U盘盘符改成你实际的U盘盘符(可以通过“此电脑”查看) - 如果不需要显示每一个文件的修改过程,把
echo 已修改:...这一行删掉就行 - 如果U盘里有大量文件,复制过程可能需要一点时间,耐心等待就好
内容的提问来源于stack exchange,提问作者Fierce Thunder
相关产品推荐
相关产品推荐

