Некоторые части командного файла не выполняются
@echo off
:: we call another script to add php to the path
call ..\..\etc\env.cmd
TITLE tick PopDB
:: we empty the window
cls
:: we create the directory for output files
set outdir=..\..\var\tick
if not exist %outdir% mkdir %outdir%
:: this is the maximum number of instances of the script that can run in parallel
set maxtick=2
:: we get the current number of running instances of the script
tasklist /FI "windowtitle eq tick PopDB" /NH /V 2>NUL | find /I /C "tick PopDB" > tmpFile
set /p nbrtick=<tmpFile
del tmpFile
echo Number of running tick instances: %nbrtick% (maximum number: %maxtick%)
:: if the maximum number is not reached
if %nbrtick% leq %maxtick% (
:: we get the PID of the script
getPID.cmd > tmpFile2
set /p pid=<tmpFile2
del tmpFile2
:: we get current hour
set dt=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%%TIME:~0,2%
set dt=%dt: =0%
:: we execute the php script
php -f tick.php %pid% >> %outdir%\tick_%dt%.out 2>&1
)
pause
По сути, цель этого сценария - проверить текущее количество запущенных экземпляров и вызвать PHP
скрипт, если максимальное количество не достигнуто.
Сценарий getPID.cmd
это скрипт, который я нашел здесь.
У меня есть несколько проблем здесь:
- Переменная
pid
не установлен. Тем не менее, файлtmpFile2
где я пишу значение правильно написано. - Переменная
dt
тоже не установлен. Я могу сказать это, потому что файлtick_dt.out
создается с пробелом вместоdt
, Название должно быть что-то вродеtick_2018112909.out
, Однако, когда я выполняю часть кода, устанавливающуюdt
в другом командном файле, он работает правильно
Итак, я предполагаю, что программа выполняется слишком быстро, чтобы система успела прочитать файл. Тем не менее, я делаю один и тот же процесс для количества запущенных экземпляров, и он работает правильно. И я понятия не имею, почему второй пункт не работает.
Файл ANSI-encoded
,
Поэтому мой вопрос: что я делаю не так и как можно заставить этот скрипт работать правильно?