Windows 批量给文件名加前缀,为什么加了两次?

Windows batch to add prefix to file names, why added twice?

为了向文件夹中的所有 pdf 文件添加一个简单的 "hello" 前缀,我使用了这个批处理文件:

FOR %%F IN (*.pdf) DO (RENAME "%%F" "hello%%F")

将其保存到 "rename.bat" 文件中并将其放入我需要重命名文件的文件夹中。然后我双击 "rename.bat".

这几乎可以工作,但第一个文件添加了两次前缀。

假设在我的文件夹中:A.pdf、B.pdf、C.pdf,它们被转换为:

你知道批处理文件有什么问题吗?


我注意到当 多个文件 时它总是这样做。当文件夹中只有一个文件时它工作正常,但它不是很有用:-)。

/f 消除了重新捕获现有文件的问题:

FOR /f "delims=" %%F IN ('DIR /a-d /b *.pdf')  DO (RENAME "%%F" "hello%%F")
@echo off
echo.
echo. Add Whatever Prefix...
echo.
echo. You Want To Add...
echo.
echo. To The Filename...
echo.
set /p variable=" > "
setlocal enabledelayedexpansion
for /f "delims=" %%a in (' dir /b /a-d *.pdf') do (
  set oldName=%%a
  Set newName=%variable%!oldName!
  Ren "!oldName!" "!newName!"
)
exit

这很好用.....试一试...没有双前缀...永远。