求批处理 随机重命名

2025-03-13 21:21:33
推荐回答(2个)
回答1:

@echo off & title 产生随机文件名 By 依梦琴瑶
cd /d %~dp0

call :CreatVBS

echo 正在重命名中...
for %%i in (*.jpg) do call :RandomStr "%%~i"
del /f /q RandomStr.vbs
pause
exit

:RandomStr
for /f "delims=" %%a in ('cscript RandomStr.vbs //nologo //e:vbscript') do set "Str=%%~a"
if exist "%Str%%~x1" goto RandomStr
ren "%~1" "%Str%%~x1"
if exist "%~n1.7z" ren "%~n1.7z" "%Str%.7z"
if exist "%~n1.rar" ren "%~n1.rar" "%Str%.rar"
if exist "%~n1.zip" ren "%~n1.zip" "%Str%.zip"
goto :eof

:CreatVBS
(echo Function GeneratePassword(length^)
echo     Dim p, s, i, l
echo     s = "abcdefghijklmnopqrstuvwxyz" ^&_
echo         "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ^&_
echo         "1234567890"
echo     Randomize : l =Len(s^)
echo     For i = 1 To length
echo         p = p ^& Mid(s, Int(Rnd * l + 1^) ,1^)
echo     Next
echo     GeneratePassword = p
echo End Function
echo WScript.Echo Left(DateDiff("s", "01/01/1970 00:00:00", Now(^)^),7^) ^& "." ^& GeneratePassword(13^))>RandomStr.vbs
goto :eof

回答2:

这算是比较极端的重命名需求了,推荐用工具Replace Pioneer2.44及以上来做,每次可以生成随机不重复的序号。

详细操作:
1. 选择Tools->Batch Runner 菜单。
2. 点击"Pick Files",按住shift或control选择100个文件。
3. 把set output filename 中的${FILENAME}改为 #.${EXT}
4. 选择Change Output Folder,并输入提前建好的新目录(注意这步是必要的,因为在同目录下改名会导致重名)
5. 观察output file列预览的新名字是否符合要求,点击File Rename,完成重命名。或者点击Copy/Download,用新名字把文件复制到新目录。

注:
1. 注意做好备份。
2. 如果不是100个文件,把公式里的相应数字100改掉就可以。