在批处理文件中运行批处理脚本

时间:2013-10-08 09:28:21

标签: batch-file

我想要一个变量,它在每次运行时从00递增到23

我必须每小时下载一小时文件,这就是我需要这种模式的原因。 09应为两位数。防爆。 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)

请帮助我理解这里出了什么问题。

1 个答案:

答案 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

也可以阅读http://www.dostips.com/DtTipsStringManipulation.php