2013-10-08 2 views
0

Я хочу переменную, которая увеличивается с 00 до 23 на каждом прогоне.Запуск пакетного скрипта в пакетном файле

Мне нужно каждый час загружать часовые файлы, поэтому мне нужен этот шаблон. 0 - 9 должно быть двухзначным числом. Ex. 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

Вам не нужно писать собственный планировщик, это уже сделано много раз. http://technet.microsoft.com/en-us/library/bb726974.aspx – spydon

ответ

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 чтение тоже.

Смежные вопросы