删除文件名中的空格会重复错误

时间:2015-12-15 15:41:41

标签: batch-file

我有以下脚本从文件名中删除空格:

@echo oN
setlocal enabledelayedexpansion
for /r %%j in (*.*) do (
set filename=%%~nj
set filename=!filename: =!
if not "!filename!"=="%%~nj" ren "%%j" "!filename!%%~xj"
)
Pause

它运行良好,但我遇到的问题是,当删除空格并跳过文件时,将出现重复的文件名。我需要它将(2)附加到文件名(filename(2).doc)。

有人可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:1)

您可以在重命名之前检查文件是否存在。然后,您可以调用函数来编号文件名。

@echo oN
setlocal enabledelayedexpansion
for /r %%G in (*.*) do (
    set filename=%%~nG
    set filename=!filename: =!
    if not "!filename!"=="%%~nG" (
        IF EXIST "%~dpG\!filename!%%~xG" (
            CALL :NUMBERUP "%%~G" "!filename!"
        ) ELSE (
        ren "%%G" "!filename!%%~xG"
        )
    )
)
Pause
GOTO :EOF

:NUMBERUP
SET NUM=0
:LOOP
SET /A NUM+=1
IF EXIST "%~dp1\%~2%NUM%%~x1" GOTO LOOP
ren "%~1" "%~n2%NUM%%~x1"
GOTO :EOF