@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文件或文件夹名 随机命名 ,重新命名时 不能破坏原文件一 一对应的原则。
此代码运行出来的名称 有些没有名字 ,而且是全部文件名进行了随机重命名(文件夹名称似乎没有改变) 图片无法对应找到相应的压缩包或文件夹 详见下图