使用bat方式写一段代码:代码的功能是重命名当前文件夹下的文件,删除当前文件名中数字间的下划线。例如:DVR_2023_05_22_10_02_25_542.tar.gz变成DVR_20230522100225542.tar.gz
时间: 2023-09-23 22:11:12 浏览: 66
您好,以下是符合您要求的代码:
```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` 命令进行重命名操作。
相关问题
使用bat方式写一段代码:代码的功能是重命名当前文件夹下的文件,删除当前文件名中数字之间的下划线。例如:DVR_2023_05_22_10_02_25_542.tar.gz变成DVR_20230522100225542.tar.gz
可以使用以下代码实现:
```bat
@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
set "filename=%%~nf"
set "extension=%%~xf"
set "newfilename=!filename:_=\!"
ren "%%f" "!newfilename!!extension!"
)
echo Renaming completed!
pause>nul
```
这段代码会遍历当前文件夹下的所有文件,对每个文件进行重命名操作。首先,它会将文件名和扩展名分别保存在变量`filename`和`extension`中。然后,使用`set`命令和`!`语法将`_`替换为`空格`。最后,使用`ren`命令重命名文件。
注意:该代码仅适用于文件名中的第一个下划线和第二个下划线之间包含数字的情况。如果文件名中的下划线不止两个,或者数字不在第一个和第二个下划线之间,该代码可能会出现错误。
用bat脚本重命名当前文件夹下的txt文件,要求按文件夹中的文件名前五位中两个下划线中间的数字升序的顺序,且十位数要排在所有个位数的后面,将文件名从1开始进行重命名
好的,以下是针对你的问题的bat脚本:
```
@echo off
setlocal enabledelayedexpansion
set i=1
for /f "tokens=2 delims=_" %%a in ('dir /b /on *_*_*_*_*_*.txt') do (
set num=0%%a
set num=!num:~-3!
ren "*_%%a_*.txt" "!num!.txt"
set /a i+=1
)
```
这个脚本假设所有要重命名的txt文件都符合"*_数字_*_*.txt"的格式,其中数字是你要排序的依据。脚本的工作流程如下:
1. 将变量i初始化为1,用于给文件递增编号。
2. 使用dir命令获取当前文件夹下所有符合要求的txt文件的列表,并按数字升序排序。
3. 对于每个文件名,从中提取第二个用"_"分隔的数字作为排序依据。
4. 将数字前面加上一个0,然后从字符串末尾取出后3位,这样可以保证所有数字都是3位数,且十位数排在个位数的后面。
5. 使用ren命令将当前文件重命名为"!num!.txt",其中"!"是因为我们需要启用delayed expansion,否则变量num的值会在循环开始前就被扩展成空。
6. 将变量i加1,为下一个文件名做准备。
希望这个脚本能够帮到你!
阅读全文