我有一个 mp3 播放器,它有一个设计不佳的硬编码随机生成器,用于随机播放歌曲。每次我打开它时,它都会播放相同的序列(5-22-3-150-75-86...等)为了听到更多的变化,我希望能够定期随机化 USB 上的文件名粘贴并更改文件在目录列表中的位置。
我正在尝试将子目录中的所有文件名重命名为随机数。这是我一直在尝试的方法,但它不起作用。由于某种原因,%num% 在新文件名中是空白的。
1| for %%A in (*.mp3) DO (
2| set /A num=%RANDOM%*100/32768+1
3| ren "%%A" %num%.mp3
4| )
5| pause
(在讨论期间为清楚起见添加了行号)
每个文件的输出如下所示。
D:\music_playlists\pop-mix [25gb]>(
set /A num=13621*100/32768+1
ren "Country-132.mp3" .mp3
)
存在重复文件名,或
找不到文件。
如您所见,%NUM% 未扩展为第 3 行的文件名...
我需要做什么?
更新 - 不确定到底发生了什么,但这似乎有效,即使回显显示空白字段
SETLOCAL EnableDelayedExpansion
FOR %%A IN (*.mp3) DO (
SET /A NUM=!RANDOM!
echo !NUM!
REN "%%A" !NUM!.mp3
)
PAUSE
尝试启用延迟扩展并更改用于点和点的
%
符号:RANDOM
NUM
!
如果已经选择了随机数,是否有任何文件具有相同的名称?因此,将失败
一般来说,是的,所以在这些情况下,您将需要获得另一个随机数以使用唯一的名称/编号重命名文件。
我是否可以建议将小数点后两位的范围进一步扩大,以规避减少重命名文件时重复的可能性?