使用BAT批量处理文件名,例如将文件名为DVR_2023_05_22_10_02_25_542.tar.gz改变成DVR_20230522100225542.tar.gz
时间: 2023-08-16 08:03:42 浏览: 76
可以使用以下BAT代码实现:
```bat
@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
set "filename=%%~nf"
set "extension=%%~xf"
set "newfilename=!filename:_=\!"
set "newfilename=!newfilename:~0,7!!newfilename:~8,2!!newfilename:~11,2!!newfilename:~14,2!!newfilename:~17,2!!newfilename:~20,3!!newfilename:~24,3!"
ren "%%f" "!newfilename!!extension!"
)
echo Renaming completed!
pause>nul
```
该代码遍历当前文件夹下的所有文件,并对每个文件进行重命名操作。首先,它将文件名和扩展名分别保存在变量`filename`和`extension`中。然后,使用`set`命令和`!`语法将`_`替换为`\`。接下来,使用字符串切片操作将文件名中的数字提取出来,并重新组合成新的文件名。最后,使用`ren`命令重命名文件。
注意:该代码仅适用于文件名中的第一个下划线和第二个下划线之间包含数字的情况。如果文件名中的下划线不止两个,或者数字不在第一个和第二个下划线之间,该代码可能会出现错误。
相关问题
使用bat方式写一段代码:代码的功能是重命名当前文件夹下的文件,删除当前文件名中数字间的下划线。例如:DVR_2023_05_22_10_02_25_542.tar.gz变成DVR_20230522100225542.tar.gz
您好,以下是符合您要求的代码:
```bat
@echo off
setlocal enabledelayedexpansion
for %%i in (*) do (
set "filename=%%~ni"
set "newname="
for /f "tokens=1-6 delims=_" %%j in ("!filename!") do (
set "newname=%%j_%%k%%l%%m%%n"
)
if defined newname (
ren "%%i" "!newname!%%~xi"
)
)
```
其中,`enabledelayedexpansion` 可以使变量在循环中能够被正确地解析。循环中,`%%i` 表示当前处理的文件名,`%%~ni` 表示文件名去掉扩展名后的部分,`%%~xi` 表示文件扩展名。接下来,将文件名中的数字和下划线进行分离,并将数字连起来赋值给 `newname` 变量。最后,使用 `ren` 命令进行重命名操作。
阅读全文