if 循环内的条件与批处理文件
if condition inside for loop with batch file
我有一个批处理文件,它将:
1.Count 没有。 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.Then 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.After 每 30 次执行它应该 运行 一个宏脚本 logout.iim
& login.iim
。
2.And 然后继续 for 循环。
所以基本上是 for 循环中的一个 if 条件,它将检查计数是否是 30 的倍数,然后执行 logout.iim
& login.iim
否则什么都不做。
为此您需要延迟扩展,即 put
setlocal enabledelayedexpansion
在批处理文件的开头。
然后您可以在循环中创建一个新变量:
set /a mod=%%A %% 30
并检查它是否为 0:
if !mod!==0 (
rem do something
)
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
)
....
)
这将为必须完成注销的每个点定义一个变量。在迭代过程中,测试是否存在与当前循环关联的变量:如果变量存在,则该注销了。
我有一个批处理文件,它将: 1.Count 没有。 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.Then 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.After 每 30 次执行它应该 运行 一个宏脚本 logout.iim
& login.iim
。
2.And 然后继续 for 循环。
所以基本上是 for 循环中的一个 if 条件,它将检查计数是否是 30 的倍数,然后执行 logout.iim
& login.iim
否则什么都不做。
为此您需要延迟扩展,即 put
setlocal enabledelayedexpansion
在批处理文件的开头。
然后您可以在循环中创建一个新变量:
set /a mod=%%A %% 30
并检查它是否为 0:
if !mod!==0 (
rem do something
)
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
)
....
)
这将为必须完成注销的每个点定义一个变量。在迭代过程中,测试是否存在与当前循环关联的变量:如果变量存在,则该注销了。