DOS批量重命名
下面有一些文件:dir /b *.*
得到
144-10.1.4.150-1484707792127
2326-10.1.4.150-1484708376194
3682-10.1.4.150-1484709441269
4346-10.1.4.150-1484708488670
4378-10.1.4.150-1484708700869
4407-10.1.4.150-1484709887151
4421-10.1.4.150-1484709934360
4565-10.1.4.150-1484709319358
4940-10.1.4.150-1484709211319
4992-10.1.4.150-1484708156493
5105-10.1.4.150-1484708598561
5262-10.1.4.150-1484709077347
5559-10.1.4.150-1484708769183
5622-10.1.4.150-1484709663010
7669-10.1.4.150-1484709567772
8124-10.1.4.150-1484708839802
9152-10.1.4.150-1484709390804
如何改成 第一列.txt呢?
同目录下面新建一个bat文件,内容为:
@ECHO OFF
FOR /F "tokens=1,* delims=-" %%i in ('dir /b *.*') do (
if not "%%~ni"=="%~n0" if not "%%~xi"==".txt" (
echo %%i-%%j
ren %%i-%%j %%i.txt
)
)
pause
改脚本知识点:
1. for /F
支持一些参数,tokens是表示变量和分割之后的对应关系。
2. tokens=1,*
表示 %i对应第1列,其余列剩下的所有内容在%j。字母根据tokens序列依次往后顺延。
3. delims表示分隔符为-
4. dir /b *.*
列出仅仅有文件名(包含扩展)列表
5. "%%~ni"=="%~n0"
,%~ni
表示%i扩展到文件名不含扩展名。(%%~ni表示取出这个变量)
6. "%~n0"
表示当前脚本的文件名,处理文件的时候应该忽略脚本本身。
7. %~xi
表示%i扩展到当前的文件扩展名,例如是”.txt”
8. if语句两个语句 连接 不是and 也不是 &&,用的是if 条件1 和if 条件2直接用空格连接。
9. %%i-%%j
直接字符串拼接得到原始文件名,使用ren命令得到%%i.txt
,也就是第一列加上.txt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!