使用cmd删除文件名前缀

时间:2013-02-28 12:46:38

标签: windows file batch-file cmd file-rename

我在一个文件夹中有数千个文件,其中大多数都有如下名称的前缀:NNNN _ *。jpg

例如 3453_dfgdhfdgh.jpg 1000_dfgdhfdgh.jpg 5463_dfgdhfdgh.jpg 等。

我如何使用CMD通过删除文件中的前缀来重命名所有文件,其中存在这样的前缀?

1 个答案:

答案 0 :(得分:2)

如果前面总是一个四位数字,那么这很容易:

setlocal enabledelayedexpansion
for %%F in (*) do (
  set "FN=%%F"
  set "FN=!FN:~5!"
  ren "%%F" "!FN!"
)
goto :eof

但也许您需要首先检查是否真的如此,在这种情况下我们需要两个辅助函数(在上面的部分下面添加它们):

:IsDigit
set Digit=
if "%~1" GEQ "0" if "%~1" LEQ "9" set Digit=1
goto :eof

:IsNumber
setlocal
set "File=%~1"
set Number=
call :IsDigit "%File:~0,1%"
set Digit1=%Digit%
call :IsDigit "%File:~1,1%"
set Digit2=%Digit%
call :IsDigit "%File:~2,1%"
set Digit3=%Digit%
call :IsDigit "%File:~3,1%"
set Digit4=%Digit%
if "%Digit1%%Digit2%%Digit3%%Digit4%"=="1111" set Number=1
endlocal & set Number=%Number%
goto :eof

然后适应如下:

setlocal enabledelayedexpansion
for %%F in (*) do (
  set "FN=%%F"
  call :IsNumber "!FN!"
  if defined Number if "!FN:~4,1!"=="_" (
    set "FN=!FN:~5!"
    ren "%%F" "!FN!"
  )
)
goto :eof