答案1
两个 Windows 10 64 位批处理文件,用于使用相同的随机数重命名文件或使用不同的随机数重命名文件。
我不确定您想做什么,所以我给了您几个例子,并且我将单引号改为双引号。
开始测试
如果你希望每个重命名的文件都以相同的随机数开头
@echo off
del mylist.txt
for %%i in (*.mp4) do echo "%%i" "%random%_%%i" >> mylist.txt
exit /b
如果你希望每个重命名的文件都以不同的随机数开头
@echo off
setlocal EnableDelayedExpansion
del mylist.txt
REM Prevent !random! from being applied more than once.
for /f %%i in ('dir /b *.mp4') do echo "%%i" "!random!_%%i" >> mylist.txt
exit /b
结束测试
开始重命名
如果你希望每个重命名的文件都以相同的随机数开头
@echo off
for %%i in (*.mp4) do ren "%%i" "%random%_%%i"
dir /b *.mp4 > mylist.txt
exit /b
如果你希望每个重命名的文件都以不同的随机数开头
@echo off
setlocal EnableDelayedExpansion
REM Prevent !random! from being applied more than once.
for /f %%i in ('dir /b *.mp4') do ren "%%i" "!random!_%%i"
dir /b *.mp4 > mylist.txt
exit /b
结束重命名
如果您正在谈论资源管理器如何对文件进行排序,请尝试以下操作:
找到 .mp4 中的某个属性,让它为你提供所需的顺序。如果没有属性能让你获得所需的顺序,则更改每个文件的属性,让它为你提供所需的顺序。
我想我现在明白你想要什么了。
(for /f %%i in ('dir /b /od *.mp4') do echo "%%i") > mylist.txt
给出:
"5.mp4"
"2.mp4"
"1.mp4"
"6.mp4"
"3.mp4"
"7.mp4"
"4.mp4"
排序顺序基于日期和修改时间。您的文件的创建日期和修改时间很可能与我的文件不同,因此您的结果会有所不同。这能满足您的要求吗?
答案2
_ // mp3 led zero 名称的答案相同_\ _
考虑到预防情况,在处理过程中已经选择了随机数,并且某些文件具有相同的名称/编号,则将生成一个新的随机数,以确保每次重命名都获得唯一的名称/编号...
goto :Leed_by_Zero
@echo off & setlocal enabledelayedexpansion & title <nul & title ...\%~pn0
for /f delims^= %%a in ('where.exe ".:*.mp4"')do call :] "%%~dpa" "%%~nxa"
:^]
for /f %%f in ('set /a _num^=!random!*1000/32768+1')do set "_name_num=%%f"
if not exist "%~1_name_num!.mp4" ren "%~1%~2" "!_name_num!.mp4" 2>nul && (
exit /b ) || ( if "%~1-%~2" == "-" ( goto :^[ ) else (rem./ && goto :^] ))
:^[
>paths.txt (for /f tokens^=* %%i in ('dir/b/od *.mp4')do echo=file '%%~fi')
>names.txt (for /f tokens^=* %%j in ('dir/b/od *.mp4')do echo=file '%%~nxj')
rem./ the paths.txt file will save in for loop the full file path: file.mp4
rem./ the names.txt file only get in loop the file name.extension: file.mp4
- Leed by Zero
@echo off & setlocal enabledelayedexpansion & title <nul & title ...\%~pn0
for /f delims^= %%a in ('where.exe ".:*.mp4"')do call :] "%%~dpa" "%%~nxa"
:^]
for /f %%f in ('set /a _num^=!random!*1000/32768+1')do set "_name_num=%%f"
call set "_name_num=000!_name_num!" &&call set "_name_num=!_name_num:~-4!"
if not exist "%~1_name_num!.mp4" ren "%~1%~2" "!_name_num!.mp4" 2>nul && (
exit /b ) || ( if "%~1-%~2" == "-" ( goto :^[ ) else (rem./ && goto :^] ))
:^[
>paths.txt (for /f tokens^=* %%i in ('dir/b/od *.mp4')do echo=file '%%~fi')
>names.txt (for /f eol^=^| %%j in ('dir/b/o:d *.mp4')do echo=file '%%~nxj')
rem./ the paths.txt file will save in for loop the full file path: file.mp4
rem./ the names.txt file only get in loop the file name.extension: file.mp4