![如何选择文件夹中的随机文件?](https://linux22.com/image/1457842/%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在尝试使用 Windows 命令行批处理脚本(无 PowerShell)从文件夹(以及可选的子文件夹)中选择一个特定类型(如 *.mp4)的随机文件
文件完整路径应存储在环境变量中以供进一步使用
我怎样才能实现这个目标?
答案1
如何选择文件夹中的随机文件?
使用以下批处理文件:
@echo off
setlocal
setlocal EnableDelayedExpansion
rem store the matching file names in list
dir /b *.txt /s 2> nul > files
rem count the match files
type files | find "" /v /c > tmp & set /p _count=<tmp
rem get a random number between 0 and count-1
set /a _random=%random%*(%_count%)/32768
rem we can't skip 0 lines
if %_random% equ 0 (
for /f "tokens=*" %%i in ('type files') do (
set _randomfile=%%i
echo !_randomfile!
goto :eof
)
) else (
for /f "tokens=* skip=%_random%" %%i in ('type files') do (
set _randomfile=%%i
echo !_randomfile!
goto :eof
)
)
环境变量!_randomfile!
将包含随机文件的文件名。
笔记:
/s
如果您不想匹配子文件夹中的文件,请删除。0
=<%RANDOM%
<因此如果您有多个匹配的文件,32767
它将不起作用。32766
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 寻找- 在文件中搜索文本字符串并显示找到该字符串的所有行。
- 对于/f- 循环命令以执行另一个命令的结果。
- 随机的- Windows CMD shell 包含一个名为的动态变量
%RANDOM%
,可用于生成随机数。