如何使用批处理文件重命名文件夹中的文件?

How to rename files in a folder in using batch file?

我有文件考试:

abc de&f 1 ijk.mp3

abc de&f 2 ijk.mp3

abc de&f 3 ijk.mp3

.....

我想将这些文件重命名为:

abc de&f xyz 1 ijk.mp3

abc de&f xyz 2 ijk.mp3

...

我用这个命令

for /F "tokens=*" %%x in ('dir /b *.mp3') do call :rena "%%x"

exit

:rena

set y=%~1

set y=%y:de^&f=de^&f xyz%

ren "%~1" "%y%"

goto :eof

但在这一行出现“&”符号错误:

set y=%~1

请帮帮我。谢谢。

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "tokens=*" %%a IN (
 'dir /b /a-d "%sourcedir%\*.mp3" '
 ) DO CALL :rena "%%a"

GOTO :EOF

:rena
SET "original=%~1"
SET "new=%original:de&f=de&f xyz%"
ECHO REN "%sourcedir%\%~1" "%new%"
GOTO :eof

所以我更改了变量的名称和要扫描的目录名称 - 这并不重要。

密钥在 set 命令中使用引号 - 首选在字符串集中以确保未分配尾随空格。

显然,ren 命令也只是 echoed。