Windows 确保使用给定参数调用批处理文件最多N次

Windows 确保使用给定参数调用批处理文件最多N次,windows,batch-file,cmd,find,Windows,Batch File,Cmd,Find,我有一个Windows批处理文件,它接收多个参数,并对文件执行一些任务 我的主要目的是执行某个任务(具有给定参数集的批处理文件)最多5次。为了做到这一点,我将其输出重定向(并回显调用参数)到log.file 我想检查以前是否发出过相同的命令,因此我执行查找: ..... set retryC=0 @set cc=%* :: replace quote with double quote so it works with find @set cc=%cc:"=""% setlocal Enabl

我有一个Windows批处理文件,它接收多个参数,并对文件执行一些任务

我的主要目的是执行某个任务(具有给定参数集的批处理文件)最多5次。为了做到这一点,我将其输出重定向(并回显调用参数)到
log.file

我想检查以前是否发出过相同的命令,因此我执行查找:

.....

set retryC=0
@set cc=%*
:: replace quote with double quote so it works with find
@set cc=%cc:"=""%
setlocal EnableDelayedExpansion
for /f "tokens=3" %%f in ('find /C "%cc%" "d:\temp\log.file"') do set retryC=%%f
@echo retry count = %retryC%
@echo local retry count = !retryC!
endlocal
无论日志文件执行多少次,它都只会在日志文件中回显零结果

retry count = 0
local retry count = 0
但是,如果我复制由
for
命令输出到日志中的行,并直接在控制台中执行它,它就会工作

>for /F "tokens=3" %f in ('find /C "-p1 ""p1val"" -p2 ""p2val""" "d:\temp\log.file"') do set retryC=%f
>set retryC=14
知道为什么会发生这种情况,以及如何在批处理文件中获得相同的结果吗


我已经尝试在查找之前执行
复制/v/y“d:\temp\log.file”“d:\temp\tmp.file”
,并对其执行
for
,结果相同(零)

尝试用感叹号扩展
cc
的值,而不是百分比:
('find/C'!cc!'d:\temp\log.file')
我尝试过,但没有帮助。在这种情况下,该命令在日志中扩展为/F“tokens=3”%F In('find/C“!cc!'d:\temp\log.file“')do set retryC=%F