用于在文件前面添加随机数(3 位数字)和删除数字的批处理文件
Batch files for Adding random numbers (3 digits) in front of files and for removing the numbers
我对 2 个批处理文件感兴趣:一个生成随机数(3 位数字)并将它们放在文件夹中每个 MP3 文件的前面,另一个用于删除这些随机数。
第一批我的尝试:
@echo off
setlocal EnableDelayedExpansion
for %%i in (*.mp3) do ( ren "%%i" "!RANDOM!%%i" )
endlocal
问题:数字最多为 5 位。
第二批我的尝试:
@echo off
setlocal enableextensions enabledelayedexpansion
for %%i in (*.mp3) do (set name=%%i && ren "!name!" "!name:~3!")
endlocal
问题:它从第一个文件中删除了 6 个字符。
- 要获得一个有 3 个位置的随机数,您可以通过以下方式进行模除
1000
- 要为小于 100 的数字获取前导零,您可以添加 1000,并且只能添加
使用数字的最后 3 位。
- 为了简化数字的拆分,我会使用像
_
这样的分隔符
@Echo off & Setlocal EnableDelayedExpansion
Set "Delims=_"
for %%i in (*.mp3) do (
Set /A RndNum=1000+!Random! %% 1000
Echo Ren "%%i" "!RndNum:~-3!%Delims%%%i"
)
Pause
出于测试目的,ren 命令前面加上了回显,
当输出正常时将其删除。
@Echo off
Set "Delims=_"
For /F "tokens=1,* Delims=%Delims%" %%A in (
'Dir /B "???%Delims%*.mp3" '
) do Echo ren "%%A%Delims%%%B" "%%B"
Pause
也许你会对我前段时间写的这两个批处理文件感兴趣:
争夺songs.bat:
@echo off
setlocal EnableDelayedExpansion
rem Scramble *.mp3 files inserting a random number in their names
rem Antonio Perez Ayala
rem Create a list of numbers in natural order for all files
rem with four digits each and a separation space
cd "%~DP0\My Music in 4GB"
set i=10000
set "list="
for %%a in (*.mp3) do (
set /A i+=1
set "list=!list!!i:~-4! "
)
set /A i-=10000
rem Extract random elements from the list of numbers
rem and use they in the new name of the files
for /F "delims=" %%a in ('dir /B *.mp3') do (
echo !i!- "%%a"
set /A "randElem=!random! %% i * 5, i-=1"
for %%r in (!randElem!) do for /F %%s in ("!list:~%%r,4!") do (
setlocal DisableDelayedExpansion
ren "%%a" "%%s- %%a"
endlocal
set "list=!list:%%s =!"
)
)
pause
解读songs.bat:
@echo off
setlocal DisableDelayedExpansion
rem Unscramble the *.mp3 files removing the random number from their names
rem Antonio Perez Ayala
cd "%~DP0\My Music in 4GB"
for /F "tokens=1*" %%a in ('dir /B *.mp3') do (
echo %%a "%%b"
ren "%%a %%b" "%%b"
)
pause
第一个批处理文件在每首歌曲之前插入一个四位数的数字,因为我的 4GB 卡可以接受超过 1000 首歌曲,但我很确定您可以修改此代码以将数字减少到 3 位数.. .
我对 2 个批处理文件感兴趣:一个生成随机数(3 位数字)并将它们放在文件夹中每个 MP3 文件的前面,另一个用于删除这些随机数。
第一批我的尝试:
@echo off
setlocal EnableDelayedExpansion
for %%i in (*.mp3) do ( ren "%%i" "!RANDOM!%%i" )
endlocal
问题:数字最多为 5 位。
第二批我的尝试:
@echo off
setlocal enableextensions enabledelayedexpansion
for %%i in (*.mp3) do (set name=%%i && ren "!name!" "!name:~3!")
endlocal
问题:它从第一个文件中删除了 6 个字符。
- 要获得一个有 3 个位置的随机数,您可以通过以下方式进行模除 1000
- 要为小于 100 的数字获取前导零,您可以添加 1000,并且只能添加 使用数字的最后 3 位。
- 为了简化数字的拆分,我会使用像
_
这样的分隔符
@Echo off & Setlocal EnableDelayedExpansion
Set "Delims=_"
for %%i in (*.mp3) do (
Set /A RndNum=1000+!Random! %% 1000
Echo Ren "%%i" "!RndNum:~-3!%Delims%%%i"
)
Pause
出于测试目的,ren 命令前面加上了回显, 当输出正常时将其删除。
@Echo off
Set "Delims=_"
For /F "tokens=1,* Delims=%Delims%" %%A in (
'Dir /B "???%Delims%*.mp3" '
) do Echo ren "%%A%Delims%%%B" "%%B"
Pause
也许你会对我前段时间写的这两个批处理文件感兴趣:
争夺songs.bat:
@echo off
setlocal EnableDelayedExpansion
rem Scramble *.mp3 files inserting a random number in their names
rem Antonio Perez Ayala
rem Create a list of numbers in natural order for all files
rem with four digits each and a separation space
cd "%~DP0\My Music in 4GB"
set i=10000
set "list="
for %%a in (*.mp3) do (
set /A i+=1
set "list=!list!!i:~-4! "
)
set /A i-=10000
rem Extract random elements from the list of numbers
rem and use they in the new name of the files
for /F "delims=" %%a in ('dir /B *.mp3') do (
echo !i!- "%%a"
set /A "randElem=!random! %% i * 5, i-=1"
for %%r in (!randElem!) do for /F %%s in ("!list:~%%r,4!") do (
setlocal DisableDelayedExpansion
ren "%%a" "%%s- %%a"
endlocal
set "list=!list:%%s =!"
)
)
pause
解读songs.bat:
@echo off
setlocal DisableDelayedExpansion
rem Unscramble the *.mp3 files removing the random number from their names
rem Antonio Perez Ayala
cd "%~DP0\My Music in 4GB"
for /F "tokens=1*" %%a in ('dir /B *.mp3') do (
echo %%a "%%b"
ren "%%a %%b" "%%b"
)
pause
第一个批处理文件在每首歌曲之前插入一个四位数的数字,因为我的 4GB 卡可以接受超过 1000 首歌曲,但我很确定您可以修改此代码以将数字减少到 3 位数.. .