我正在使用If-Else命令和Modulo-Operator(Windows 7 CommandLine)
我想每小时只使用一个命令。我的批处理每分钟拨出一次,并将“结果”存储在“myIP.csv” -File
我的批次看起来像这样。
@echo off
set COUNTER=0
:AGAIN
set TimeVar=%time:~0,8%
for /f "skip=4 tokens=2" %%a in ('nslookup myip.opendns.com. resolver1.opendns.com') do (set IP=%%a)
for /f "tokens=*" %%b in ('ping -n 2 8.8.8.8') do (set ANSWER=%%b)
echo %date%,%TimeVar%,%IP%,%ANSWER:~0,-1%; >> myIP_newOne.txt
SET /A COUNTER+=1
timeout 60
goto AGAIN
看起来应该是这样的
@echo off
SET COUNTER=0
SET HOUR=60
:AGAIN
SET /a DOIT=COUNTER%%HOUR
IF %DOIT% === 0 (
CODEBLOCK-A...
CODEBLOCK-B...
) ELSE (
CODEBLOCK-A
)
timeout 60
goto AGAIN
我尝试了几种不同的方法,但我无法使其发挥作用。我想每小时只使用一次“GetIP”-Command ...而不是每分钟。 Perhabs我只是有一些“糟糕的格式”。不知道为什么它不起作用。
我希望你理解我的意思。
答案 0 :(得分:0)
IF %DOIT% === 0 (
应该是
IF %DOIT% == 0 (
(两个=
,而不是3)
答案 1 :(得分:0)
非常感谢。 4只眼睛超过2只: - )
这是我的完整代码(希望现在和将来永远有效)
编辑: 如果你想使用Modulo,你将需要两个%
HERE是代码模块
@echo off
SET /A minute=0
SET /A hour=60
:LOOP
SET TimeVar=%time:~0,8%
SET /A DOIT=minute%%hour
IF %DOIT% == 0 (
for /f "skip=4 tokens=2" %%a in ('nslookup myip.opendns.com. resolver1.opendns.com') do (set IP=%%a)
for /f "tokens=*" %%b in ('ping -n 2 8.8.8.8') do (set ANSWER=%%b)
echo "MODULO WORKS"
) ELSE (
for /f "tokens=*" %%b in ('ping -n 2 8.8.8.8') do (set ANSWER=%%b)
)
echo %date%,%TimeVar%,%IP%,%ANSWER:~0,-1%; >> myIP.csv
PING -n 61 127.0.0.1>nul
SET /A minute=%minute%+1
REM echo %minute%
goto LOOP
Simple Modulo-Example 快速版
@echo off
SET /A minute=0
SET /A hour=60
:LOOP
SET /A DOIT=minute%%hour
IF %DOIT% == 0 (
echo "CodeBlock-A & CodeBlock-B"
) ELSE (
echo "CodeBlock-A"
)
PING -n 1 127.0.0.1>nul
SET /A minute=%minute%+1
goto LOOP
答案 2 :(得分:-1)
这应该有效:
@ECHO OFF
SET "minute=0"
:loop
IF "%minute%"=="60" (
COMMAND A
COMMAND B
SET "minute=0"
) ELSE (
COMMAND A
)
PING -n 61 127.0.0.1>nul
SET /A "minute=%minute%+1"
GOTO loop
使用PING
代替处理器时间(read more)。