Batch file 如何使for循环仅对每100个文件中的1个执行?

Batch file 如何使for循环仅对每100个文件中的1个执行?,batch-file,Batch File,我需要这个循环每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个文件运行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%的文件

生成的
rnd
用于保存0到99之间的数字。因此,
if
以每个文件1%的概率触发(使用
if!rnd!lss 25…
以25%的概率触发)。
这将平均为您提供1%的文件

只是一些想法

@echo关闭
setlocal enableextensions disabledelayedexpansion
回音(
回显案例1,每100个文件一个
回音(
rem初始化计数器变量。
rem这里有两个选项,固定启动或随机启动
设置“n=0”
设置/a“n=%random%%%100”
隐藏时快速眼动
每个文件的rem
rem增加计数器并计算1/n mod 100
如果n是100的倍数,rem计算将失败
rem使用条件执行运算符来检测故障和
rem回显文件名
2> 努尔(
对于/f“delims=“%%a in('dir/s/b/a-d')do(
设置/a“n+=1”,“1/(n%%100)”|回声%%a
)
)
回音(
回声案例2,随机文件选择,概率为1/100
回声(
延迟扩展
2> 努尔(
对于/f“delims=“%%a in('dir/s/b/a-d')do(
设置/a“1/(!random!*100/32768)”||(
setlocal disabledelayedexpansion
回声%%a
端部
)
)
)
端部
回音(
echo案例3,随机1/100文件选择
回音(
rem生成带有随机前缀的文件列表,对列表进行排序,然后
在案例1中,rem使用相同的方法每100次检索一个文件
设置“n=0”
2> 努尔(
对于/f“令牌=1,*”%%a,在('
目录/s/b/a-d
^|cmd/q/e/v/c“for/f delims^=%%a in('find/v”“)do set/a!rando!&echo%%a”
^|分类
""做"(
设置/a“n+=1”,“1/(n%%100)”|回声%%b
)
)
只是一些想法

@echo关闭
setlocal enableextensions disabledelayedexpansion
回音(
回显案例1,每100个文件一个
回音(
rem初始化计数器变量。
rem这里有两个选项,固定启动或随机启动
设置“n=0”
设置/a“n=%random%%%100”
隐藏时快速眼动
每个文件的rem
rem增加计数器并计算1/n mod 100
如果n是100的倍数,rem计算将失败
rem使用条件执行运算符来检测故障和
rem回显文件名
2> 努尔(
对于/f“delims=“%%a in('dir/s/b/a-d')do(
设置/a“n+=1”,“1/(n%%100)”|回声%%a
)
)
回音(
回声案例2,随机文件选择,概率为1/100
回声(
延迟扩展
2> 努尔(
对于/f“delims=“%%a in('dir/s/b/a-d')do(
设置/a“1/(!random!*100/32768)”||(
setlocal disabledelayedexpansion
回声%%a
端部
)
)
)
端部
回音(
echo案例3,随机1/100文件选择
回音(
rem生成带有随机前缀的文件列表,对列表进行排序,然后
在案例1中,rem使用相同的方法每100次检索一个文件
设置“n=0”
2> 努尔(
对于/f“令牌=1,*”%%a,在('
目录/s/b/a-d
^|cmd/q/e/v/c“for/f delims^=%%a in('find/v'')do set/a!random!&echo%%a”
^|分类
""做"(
设置/a“n+=1”,“1/(n%%100)”|回声%%b
)
)

“每一百个文件”或“大约1%随机文件”?大约1%(当前方法)完全可以。任何随机的方法都可以。“每一百个文件”或“大约1%随机文件”?大约1%(当前方法)完全可以。任何随机的方法都可以。+1,我将发布一个与您的案例1非常类似的解决方案。请注意,您可以使用
set/a“1/((n+=1)%%100)”
@dbenham,太棒了!我从来没有想过要将作业放入操作中。+1,我打算发布一个与您的案例1非常类似的解决方案。请注意,您可以使用
set/a“1/((n+=1)%%100)”
@dbenham,太棒了!我从来没有想过要将作业放入操作中。