附加到文件名的开头

Ton*_*Dev 5 windows script batch rename

我正在尝试使用批处理文件将 [Replay] 一词添加到文件夹中的所有 mp3 文件中,如下所示:

@echo off
for %a in (c:\folder\*.mp3) do ren %a [Replay]%a
Run Code Online (Sandbox Code Playgroud)

但它不会重命名文件。

我从谷歌搜索中尝试的所有示例都附加了该单词,但会覆盖文件名中的下一个字符,我只需要将该单词添加到开头,而无需运行字母。

有什么想法吗?

Den*_*nis 7

您的批处理文件存在三个问题:

  • 在批处理文件,你必须使用%%a替代%a

  • %%a 将保存完整路径,而不仅仅是文件名。

  • 如果文件名中有空格,重命名将失败。

一般来说,我还建议您echo在进行故障排除时继续使用。

试试这个:

cd /d c:\folder
for %%a in (*.mp3) do ren "%%a" "[Replay]%%a"
Run Code Online (Sandbox Code Playgroud)

如果将文件重命名两次,for则正在读取目录条目。作为解决方法,您可以将列表保存在临时文件中:

cd /d c:\folder
dir /b *.mp3 > temp
for /f "delims=" %%a in (temp) do ren "%%a" "[Replay]%%a"
del temp
Run Code Online (Sandbox Code Playgroud)

  • DO 子句可能会影响简单的 FOR 迭代。FOR /F 不受 DO 子句的影响。您可以通过使用 FOR /F 处理 DIR 命令来避免临时文件:`for /f "eol=: delims=" %%a in ('dir /b *.mp3') do ...`。我添加了 EOL=: 以防止以`;` 开头的文件名,尽管我怀疑您是否会遇到一个:) (2认同)