首页 > 解决方案 > 如何让这个 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。

标签: batch-file

解决方案


@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% 的文件。


推荐阅读