batch-file - 如何让这个 for 循环只为每 100 个文件中的 1 个执行?
问题描述
我需要这个for循环在〜每100个文件中运行1个......
for /f "delims=" %%v in ('dir /s /b /a-d 2^>nul') do if "%time:~9,2%"=="77" echo process "%%v"
问题是为所有文件分配了相同的编号,因此整个文件集被跳过,所有文件得到处理的机会约为 1:100。
解决方案
@echo off
setlocal enabledelayedexpansion
for %%a in (*) do (
set /a rnd=!random! %% 100
rem echo !rnd!
if !rnd! == 0 ECHO process "%%~fa"
)
rnd
生成以保存 0 到 99 之间的数字。因此if
每个文件的触发概率为 1%(if !rnd! lss 25 ...
用于概率为 25%)。这平均
为您提供 1% 的文件。
推荐阅读
- ruby-on-rails - 设计 - 登录参数无效的电子邮件和密码
- python - 为什么“全部”实现比编写 for 循环慢
- angular - 如何使用 Ionic4/Angular 检索嵌套 Firestore 数据库中所有用户的数据
- mysql - MySQL 5.6 - 选择多个日期时间列中最近的结果至少是 1 个月前的结果
- c - fwrite/文件IO的问题
- css - 在div内水平和垂直居中段落
- android - 使用带有 JsonSyntaxException 的 Retrofit 在 Android 中解析 JSON
- opengl - 存根 glOrthof 以使用 glOrtho
- ruby-on-rails - 到特定 div 的动作电缆
- flutter - Flutter,如何在从详细视图更新内容后更新列表视图中项目中的文本?