批次:在我的code回路它停止设置变量。所有帮助欢迎 [英] Batch: During my code loop it stops setting a variable. All Help Welcome

查看:127
本文介绍了批次:在我的code回路它停止设置变量。所有帮助欢迎的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 转到时间:时间
集TM =%TIME%
集HH =%TM:0,2〜%
集毫米=%TM:〜3,2%
集SS =%TM:6,2〜%
集毫秒=%TM:7,2〜%
转到日期:日期
一套DT =%日期%
设置WD =%DT:0,3〜%
设置MH =%DT:〜4.2%
集DY =%DT:6,2〜%
设置年=%DT:8.4〜%
转到scheduletimes:scheduletimes
转到hour1
:hour1
FOR / F令牌= 1 * delims = 0%%一中($ 0%HH%)并设置/ AHH=%% B
如果HH%EQU%6转到minutes1
暂停
转到时间
:minutes1
FOR / F令牌= 1 * delims = 0%%一中($ 0%毫米%)并设置/一个MM=%% B
如果%MM%==00后藤秒1
暂停
转到时间
:秒1
FOR / F令牌= 1 * delims = 0%%一中($ 0%SS%)并设置/ ASS=%% B
如果SS%LSS%10转到DAY1
暂停
转到时间:DAY1
回声成功
回声%HH%
回声%毫米%
回声%SS%
暂停
转到时间

正如你们可以看到这是一个时间的检查循环。眼看如果时间是6:10:> 10。基本上,我的问题是,虽然是它运行正常,直到它执行命令时,它击中的时间。一旦它变得小于10秒本节:

 :minutes1
FOR / F令牌= 1 * delims = 0%%一中($ 0%毫米%)并设置/一个MM=%% B
如果MM%EQU%0转到秒1

停止设置的 MM %毫米%,它给了我的缺少操作数错误

任何帮助将是pciated让它继续后第一次运行工作AP $ P $。

(是的,我知道有暂停,并没有关闭@echo,这是用于调试的目的。它确实有它的关闭@echo和没有停顿过)

编辑:登录

  C:\\用户\\ krato_000 \\桌面>转到scheduletimesC:\\用户\\ krato_000 \\桌面>转到hour1C:\\用户\\ krato_000 \\桌面> FOR / F令牌= 1 * delims = 0在%($ 0 6)一集做/ A
HH=%BC:\\用户\\ krato_000 \\桌面>设置/ AHH=6C:\\用户\\ krato_000 \\桌面>如果6 EQU 6转到minutes1C:\\用户\\ krato_000 \\桌面> FOR / F令牌= 1 * delims = 0在%($ 000)一集做/ A
MM=%BC:\\用户\\ krato_000 \\桌面>设置/一个MM=
缺少操作数。C:\\用户\\ krato_000 \\桌面>如果00==00后藤秒1C:\\用户\\ krato_000 \\桌面> FOR / F令牌= 1 * delims = 0在%($ 019产品),一个不设置/ A
SS=%BC:\\用户\\ krato_000 \\桌面>设置/ ASS=19C:\\用户\\ krato_000 \\桌面>如果19 LSS 10转到DAY1C:\\用户\\ krato_000 \\桌面>暂停
preSS任意键继续。 。 。


解决方案

请注意,一批不%毫米%%MM区分%。试试这个:

 :minutes1
集/一分钟= 0
FOR / F令牌= 1 * delims = 0%%一中($ 0%毫米%)并设置/一分钟= %% B 2> NUL
回声%以上%
如果%以上%EQU 0转到秒1

goto time

:time
set tm=%time%
set hh=%tm:~0,2%
set mm=%tm:~3,2%
set ss=%tm:~6,2%
set ms=%tm:~7,2%
goto date

:date
set dt=%date%
set wd=%dt:~0,3%
set mh=%dt:~4,2%
set dy=%dt:~6,2%
set yr=%dt:~8,4%
goto scheduletimes

:scheduletimes
goto hour1
:hour1
for /f "tokens=1*delims=0" %%a in ("$0%hh%") do set /a "HH"="%%b"
if %HH% equ 6 goto minutes1
pause
goto time
:minutes1
for /f "tokens=1*delims=0" %%a in ("$0%mm%") do set /a "MM"="%%b"
if "%MM%"=="00" goto seconds1
pause
goto time
:seconds1
for /f "tokens=1*delims=0" %%a in ("$0%ss%") do set /a "SS"="%%b"
if %SS% lss 10 goto day1
pause
goto time

:day1
echo success
echo %hh%
echo %mm%
echo %ss%
pause 
goto time

As you guys can see this is a time check loop. Seeing if the time is 6:10:>10. Basically what my problem is though is that it runs fine until it executes the command when it hits that time. As soon as it becomes <10 seconds in this section:

:minutes1
for /f "tokens=1*delims=0" %%a in ("$0%mm%") do set /a "MM"="%%b"
if %MM% equ 0 goto seconds1

it stops setting MM to %mm% and it gives me a Missing Operand error.

Any help would be appreciated to get it to continue working after the first run.

(Yes I do know there are pauses and no @echo off, This is for debugging purposes. It does it with the @echo off and without the pauses too)

Edit: Log

C:\Users\krato_000\Desktop>goto scheduletimes

C:\Users\krato_000\Desktop>goto hour1

C:\Users\krato_000\Desktop>for /F "tokens=1*delims=0" %a in ("$0 6") do set /a "
HH"="%b"

C:\Users\krato_000\Desktop>set /a "HH"=" 6"

C:\Users\krato_000\Desktop>if 6 EQU 6 goto minutes1

C:\Users\krato_000\Desktop>for /F "tokens=1*delims=0" %a in ("$000") do set /a "
MM"="%b"

C:\Users\krato_000\Desktop>set /a "MM"=""
Missing operand.

C:\Users\krato_000\Desktop>if "00" == "00" goto seconds1

C:\Users\krato_000\Desktop>for /F "tokens=1*delims=0" %a in ("$019") do set /a "
SS"="%b"

C:\Users\krato_000\Desktop>set /a "SS"="19"

C:\Users\krato_000\Desktop>if 19 LSS 10 goto day1

C:\Users\krato_000\Desktop>pause
Press any key to continue . . .

解决方案

Please note, batch does not differentiate between %mm%and %MM%. Try this:

:minutes1
set /a min=0
for /f "tokens=1*delims=0" %%a in ("$0%mm%") do set /a min=%%b 2>nul
echo %min%
if %min% equ 0 goto seconds1

这篇关于批次:在我的code回路它停止设置变量。所有帮助欢迎的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆