我有一个批处理文件,它将: 1.Count no。 csv文件中的行数并将计数传递给for循环
@echo It will count no.of lines in file and pass the count 2for loop
P:
cd Exa-WM-Automation\Google-Adword-Task\extra-columns-deleted-so-only-keywords-csv-file
set file=P:\Exa-WM-Automation\Google-Adword-Task\adwords-filename.csv
set /a cnt=0
for /f %%a in ('type "%file%"^|find "" /v /c') do set /a cnt=%%a
echo %file% has %cnt% lines
2.然后调用for循环,在每次执行时调用宏脚本loop-google-ad-word.iim
timeout /t 5
@echo Loop starts now
for /L %%A in (1,1,%cnt%) do (
@echo imacro loop is called
c:
start /B "" "C:\Users\webmagnet\AppData\Local\Mozilla Firefox\firefox.exe" imacros://run/?m="loop-google-ad-word.iim"
)
现在我需要的是:
然后说cnt = 570,
1.每执行30次后,它应该运行一个宏脚本logout.iim
& login.iim
。
2.然后继续for循环。
因此,基本上for循环中的if条件将检查count是否是30的倍数然后执行logout.iim
&amp; <{1}}没什么。
答案 0 :(得分:2)
你需要延迟扩展,即放
setlocal enabledelayedexpansion
在批处理文件的开头。
然后您可以在循环中创建一个新变量:
set /a mod=%%A %% 30
并检查它是否为0:
if !mod!==0 (
rem do something
)
答案 1 :(得分:2)
rem Clear previous logout points
for /f "delims==" %%A in ('set logout[') do set "%%A="
rem Calculate new logout points
set "logoutEach=30"
for /l %%A in (%logoutEach%,%logoutEach%,%cnt%) do set "logout[%%A]=1"
for /L %%A in (1,1,%cnt%) do (
if defined logout[%%A] (
rem Execute logout code
)
....
)
这将为必须完成注销的每个点定义一个变量。在迭代期间,测试是否存在与当前循环相关的变量:如果变量存在,则是时候注销。