windows 中使用dos命令写bat脚本批量修改文件名

本文介绍了一个使用WindowsDOS命令行脚本,通过`for`和`ren`命令,实现批量将.mp4文件名中的mp4替换为txt的示例,同时展示了如何处理文件名的进一步操作,如去除末尾字符和使用延迟扩展变量。
摘要由CSDN通过智能技术生成

先上代码(替换特定字符为指定字符

@echo off
setlocal enabledelayedexpansion

for /r . %%i in (*.mp4) do (
set str=%%i
set str=!str:mp4=txt!
ren "%%i" "!str!"
)
pause

以上代码作用是修改当前以及所有子文件夹下面的mp4文件名,将文件名(包含扩展名)中mp4替换为txt。

@echo off 为关闭命令回显命令,即运行时候dos窗口不会显示运行代码。

setlocal enabledelayedexpansion 为设置本地为延迟扩展。即可使用!variable!这种形式获取动态赋的值。更深层次的可以自行了解。

for /r .  表示对当前所在位置目录树遍历。%%i in (*.mp4) 表示 目标中的mp4文件的文件名赋值到%%i  do () 括号里面是循环体内部命令的地方。

set str=!str:mp4=txt! 表示将 文件名字符串中的mp4替换为txt,知道这个用法,可以触类旁通,可以将你想要的替换的字符串替换为你想要的模样。
ren "%%i" "!str!" 表示将原文件名修改为替换后的新文件名

如果需要统一去掉倒数后面几个字符,或者开头几个字符等

@echo off  
setlocal enabledelayedexpansion  
    
for %%F in (*.mp4) do (  
	rem 获取文件名 不包含扩展名
    set filename=%%~nF 
	set suf=.mp4
	rem 去掉后面1位字符, filename=%%~nF  默认后面会多个空格
	set filename=!filename:~0,-2!
	set filename=!filename!!suf!
	echo !filename!
	rem 修改文件名
	ren "%%F" "!filename!"	
)  
echo "end"
pause

核心代码 set filename=!filename:~0,-2! 替换后面两个字符,注意set filename=%%~nF获取不含扩展名的文件名时候,后面会默认多个空格,需要细心留意处理。

还有就是字符串拼接为set filename=!filename!!suf!  而不是我们熟悉其他语言的那种用+号连接。这里需要注意。

关于 set filename=%%~nF  获取文件名 不包含扩展名 有更多扩展如下(这里两个%是因为以上代码是写在xx.bat文件中的,而不是直接在dos窗口写的命令,其中一个%为转义符号。%为特殊符号,dos中很多符号为特殊符号,不同特殊符号转义符号不同,文本编辑时候需要注意转义问题):

FOR 变量参照的替换已被增强。你现在可以使用下列
选项语法:

     %~I          - 删除任何引号("),扩展 %I
     %~fI        - 将 %I 扩展到一个完全合格的路径名
     %~dI        - 仅将 %I 扩展到一个驱动器号
     %~pI        - 仅将 %I 扩展到一个路径
     %~nI        - 仅将 %I 扩展到一个文件名
     %~xI        - 仅将 %I 扩展到一个文件扩展名
     %~sI        - 扩展的路径只含有短名
     %~aI        - 将 %I 扩展到文件的文件属性
     %~tI        - 将 %I 扩展到文件的日期/时间
     %~zI        - 将 %I 扩展到文件的大小
     %~$PATH:I   - 查找列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个完全合格的名称。如果环境变量名
                   未被定义,或者没有找到文件,此组合键会扩展到
                   空字符串

可以组合修饰符来得到多重结果:

     %~dpI       - 仅将 %I 扩展到一个驱动器号和路径
     %~nxI       - 仅将 %I 扩展到一个文件名和扩展名
     %~fsI       - 仅将 %I 扩展到一个带有短名的完整路径名
     %~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展
                   到找到的第一个驱动器号和路径。
     %~ftzaI     - 将 %I 扩展到类似输出线路的 DIR

也可以为扩展名指定子字符串。

    %PATH:~10,5%

会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏
移量 10)字符开始的五个字符。如果没有指定长度,则采用默认
值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,
使用的数字则是环境变量数值长度加上指定的偏移量或长度。

    %PATH:~-10%

会提取 PATH 变量的最后十个字符。

    %PATH:~0,-2%

会提取 PATH 变量的所有字符,除了最后两个。

关于DOS命令详细使用说明可以使用 命令名  /? 这种方式获取,例如:我想知道set 命令的详细使用 只需要在dos 窗口(windows键+R调出运行窗口输入cmd回车即可调出dos窗口) 输入:set /? 回车即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值