⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 乱序重列某类文件.bat

📁 namejm写的批处理
💻 BAT
字号:
@echo off
:: 把mp3乱序重列
:: 速度飞快
:: 主要思路:先把所有的mp3文件名用dir罗列出来,并在每个文件名前加上%random%随机数,
::           用冒号分隔。然后用sort对新文件名排序,最后用for语句取出原文件名
:: code by 无奈何 CMD@XP 2006-7-27
copy nul List.txt >NUL
if "%1" NEQ "$" (
        for /f "tokens=1,2 delims=:" %%a in ('"%~0" $^|sort') do @echo %%b>>List.txt
) else for /f "delims=" %%i in ('dir /b /a-d *.mp3') do @call :sub %%i
goto :EOF

:sub
echo %random%:%*
goto :EOF

另外两种精简方案:

1、
@echo off
setlocal enabledelayedexpansion
copy nul List.txt >NUL
if "%1" NEQ "$" (
    for /f "tokens=1,2 delims=:" %%a in ('"%~0" $^|sort') do echo %%b>>List.txt
) else for /f "delims=" %%i in ('dir /b /a-d *.mp3') do echo !random!:%%i 
exit

2、
@echo off
:: 当文件名为1.mp3、2.mp3等形式的时候,会发生错误,
:: 原因是i被多次转义了,修正是去掉两个%%,同时改用
:: 两个%%random%%,从而得出2的修正版2-1.
copy nul List.txt >NUL
if "%1" NEQ "$" (
    for /f "tokens=1,2 delims=:" %%a in ('"%~0" $^|sort') do echo %%b>>List.txt
) else for /f "delims=" %%i in ('dir /b /a-d *.mp3') do call echo %%random%%:%%%%i
exit

2-1、
解决2中文件名为1.mp3、2.mp3等简单数字会出错的问题
@echo off
copy nul List.txt >NUL
if "%1" NEQ "$" (
    for /f "tokens=1,2 delims=:" %%a in ('"%~0" $^|sort') do echo %%b>>List.txt
) else for /f "delims=" %%i in ('dir /b /a-d *.mp3') do call echo %%random%%%%random%%:%%i
exit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -