将文件批量重命名为以零开头的数字

将文件批量重命名为以零开头的数字

可能重复:
如何在命令提示符中重命名一堆文件?

在使用 Linux 数年后,我又回到了 Windows(我是一名卡车司机,我刚刚将卡车租给那家公司,他们的装载板网站上有一些功能只能在 IE 中使用,并且必须打开兼容模式)。

我也听了很多有声读物。我从 CD 上翻录它们,然后从 Audible 下载,这样我就得到了一个很长的 MP3 文件列表。其中大多数文件的名称都像“第 3 章 - 进入虚空”。但我的卡车音响可以播放 USB 闪存驱动器上的 MP3 文件,但只能按文件名的前四个字符排序。文件名全部以“章节”开头的 39 个 MP3 文件列表将以随机顺序播放。所以我需要将这些文件重命名为以 2 位或 3 位数字开头的名称。

在 Linux 中,我使用 bash 脚本完成了以下操作:

#!/bin/bash
i=1
for file in *.mp3
do
        j=$( printf "%03" "$i" )
        mv "$file" "$j.mp3"
        (( i++ ))
done

这将得到一个名为 00l.mp3、002.mp3、003.mp3 等的文件目录。但我不知道如何在 Windows 中执行此操作。

我隐约记得在 Windows 中可以使用批处理文件执行某些操作,但语法完全不同,调用的可用工具也不同(不幸的是,Windows 中没有 sed 或 awk)。有人知道在哪里可以找到这些东西吗?

谢谢@

答案1

你的答案存在于如何在命令提示符中重命名一堆文件?

虽然这是命令提示符,但有批处理脚本的示例,我已将其包含在下面

@echo off
setlocal EnableDelayedExpansion
set i=0
for %%a in (*.jpg) do (
    set /a i+=1
    ren %%a !i!.new
)
ren *.new *.jpg

另一个例子

@echo off
SET COUNT=1
SET PREFIX=Photos
FOR /f "tokens=*" %%G IN ('dir /b *.jpg') DO (call :renum "%%G")
GOTO :eof

:renum
 ren %1 %PREFIX%_%count%.jpg
 set /a count+=1
 GOTO :eof

相关内容