批次:在我的code回路它停止设置变量。所有帮助欢迎 [英] Batch: During my code loop it stops setting a variable. All Help Welcome
问题描述
转到时间:时间
集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屋!