求个批处理 批量更改文件名

整理模型用:经常遇到下载的模型都以01 02 03 这种格式命名 导致把相同类型的模型整理后 放一同文件夹下 会产生同名 很是麻烦;希望能有一个批处理 能以下图方式随机命名并更改文件名 需要将图片与压缩文件名统一 且使其具有超高唯一性。避免重复 感谢~~~!!!!~~~

第1个回答  2018-01-21
@echo off
rem 设置源目录
set "ScDir=D:\test"

echo 处理中……
cd /d "%ScDir%"
for /f  "delims=" %%a in ('dir /a-d /s /b') do if exist %%a (
set "name=%%~na"
setlocal enableDelayedExpansion
if  "!name:~19,1!" equ "" (
pushd "%%~dpa"
call :ranName randomname
for /f  "delims=" %%b in ('dir /a-d /b ^|findstr "!name!"') do ren "%%b" "!randomname!%%~xb"
popd
)
endlocal
)
echo.
set/p=处理完成,按任意键退出&exit

:ranName   生成随机名字,由字母和数字组成
setlocal
set name=
set "strings=1234567890qwertyuiopasdfghjklzxcvbnm"
for /l %%a in (1,1,20) do (
set/a ran=!random!%%36
call set ch=%%strings:~!ran!,1%%
set name=!name!!ch!
)
endlocal&set %1=%name%&goto:eof

保存为bat

说明:对源目录下及其子目录下所有文件进行随机命名,具有相同文件名的不同类型文件,重命名后文件名保持一致。已重命令名的文件,再次运行时不会重复命名,所以添加新文件至源文件夹时,只会命名新文件。

追问

感谢 大神深夜为此写代码 ,刚运行了 发现了两个问题 请大神帮忙完善一下 :

    只需要源目录下 *.jpg文件和*.rar文件或文件夹名 随机命名 ,重新命名时 不能破坏原文件一 一对应的原则。

    此代码运行出来的名称 有些没有名字 ,而且是全部文件名进行了随机重命名(文件夹名称似乎没有改变)  图片无法对应找到相应的压缩包或文件夹 详见下图 

相似回答