![批量文件重命名,后缀为随机字母数字](https://linux22.com/image/1483468/%E6%89%B9%E9%87%8F%E6%96%87%E4%BB%B6%E9%87%8D%E5%91%BD%E5%90%8D%EF%BC%8C%E5%90%8E%E7%BC%80%E4%B8%BA%E9%9A%8F%E6%9C%BA%E5%AD%97%E6%AF%8D%E6%95%B0%E5%AD%97.png)
这是将文件夹中的所有文件重命名为字母数字的代码。
@echo off
setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg') do call :renameFile "%%F"
exit /b
:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
set /a I=!random!%%36
for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg
您所要做的就是复制/粘贴此代码并将其保存为 .bat 文件并放置在您想要重命名文件的任何文件夹中。
下面是它的工作原理:
例如:如果文件名是 lenovo-wallpaper.jpg 那么它将重命名为 AF45ASLJ.JPG
我想要的是 filename+alphanumeric.jpg
例如:如果文件名是 lenovo-wallpaper.jpg 那么它应该是 lenovo-wallpaper-adfs45fad1.jpg
答案1
将最后两行从
echo if exist !name!.jpg goto :retry
endlocal & ren %1 %name%.jpg
到
echo if exist %~n1+!name!.jpg goto :retry
endlocal & ren %1 %~n1+%name%.jpg
%~n1
将获取没有扩展名的文件名,然后只需+
在新变量名前添加一个。
编辑:完成批处理,将首字母大写,并捕获 JPG、BMP、PNG 和 GIF 文件
@echo off
setlocal disableDelayedExpansion
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for /f "eol=: delims=" %%F in ('dir /b /a-d *.jpg *.png *.bmp *.gif') do call :renameFile "%%F"
exit /b
:renameFile
setlocal enableDelayedExpansion
:retry
set "name="
for /l %%N in (1 1 8) do (
set /a I=!random!%%36
for %%I in (!I!) do set "name=!name!!chars:~%%I,1!"
)
echo if exist %~n1+!name!.jpg goto :retry
call :FirstUp result %~n1
endlocal & ren %1 %result%+%name%.*
exit /b
:FirstUp
setlocal EnableDelayedExpansion
set "temp=%~2"
set "helper=##AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ"
set "first=!helper:*%temp:~0,1%=!"
set "first=!first:~0,1!"
if "!first!"=="#" set "first=!temp:~0,1!"
set "temp=!first!!temp:~1!"
(
endlocal
set "result=%temp%"
goto :eof
)