我想要一个变量,它在每次运行时从00
递增到23
。
我必须每小时下载一小时文件,这就是我需要这种模式的原因。 0
至9
应为两位数。防爆。 00, 01, 02, 03, 04 .. 10, 11, 12 .. 23, 00, 01 ..
要实现上述目标,我将返回一个简单的代码,如下所示:
@echo off
set /p VAR=<Hourly_capture.txt
echo %var%
if /I %myvar% LSS 23 (SET /a myvar=%var%+1) else (SET myvar=00)
echo %myvar%
if /I %myvar% EQU 0 (echo 0 >Hourly_capture.txt) else echo %myvar% >Hourly_capture.txt
if /I %var% LSS 10 (if /I %var% NEQ 0 set Hourly_v=0%var%)
if /I %var% EQU 0 (SET Hourly_v=00) else (if /I %var% GTR 9 (SET /a Hourly_v=%var%))
echo %Hourly_v%
我第一次手动输入0
进入Hourly_capture.txt
。
现在所有这一切都已确定。我可以在终端上运行(cmd)或者将其作为批处理脚本运行,并将Hourly_v
转换为其他变量。
但我的问题是我有一个需要这个变量的主脚本。当我把这段代码放在我的脚本中或调用一个保存这些数据的bat文件时,它就退出了。没理由。
Ex:将我的上述逻辑考虑在批处理脚本Hourly_logic.bat
中。如果我运行另一个包含
Echo " Iam running Horly_logic script to get the hour variable incremented"
Hourly_logic.bat
Echo "done"
上面的主要脚本在运行Hourly_logic.bat
时立即出现。
即使我尝试将上述行直接放入主脚本中,我也会看到第4行退出的脚本,即if /I %myvar% LSS 23 (SET /a myvar=%var%+1) else (SET myvar=00)
。
请帮助我理解这里出了什么问题。
答案 0 :(得分:1)
您的主要问题是您需要使用call
从另一个批处理文件中执行一个批处理文件。
@echo off
echo I am running Horly_logic script to get the hour variable incremented
call hourly_logic.bat
echo %hourly_v% - done
我还建议采用更好的方法来增加hourly_capture.txt
档案/ hourly_v
变量:
@echo off
REM read from file and cast to int
if exist hourly_capture.txt (set /p h=<hourly_capture.txt) else (set h=0)
set /a h=%h%
REM prefix with 0 and take last 2 characters
set hh=0%h%
set hourly_v=%hh:~-2%
REM increment by 1 and save to file
if %h% LSS 23 (set /a h=%h% + 1) else (set h=0)
echo %h% >hourly_capture.txt