0

我想要一个在每次运行时从00to递增的变量。23

我必须每小时下载一次文件,这就是我需要这种模式的原因。0to9应该是两位数。前任。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 文件时,它就会退出。不明白原因。

例如:考虑到我的上述逻辑在批处理脚本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).

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

4

1 回答 1

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

于 2013-10-08T10:07:35.630 回答