Это может показаться удивительным, но ваш пакетный скрипт не распознает переменную %dateextracted%
, потому что она на самом деле не существует.
echo. > dateextracted.txt
уже создает файл dateextracted.txt
, поэтому ваш :wait1..goto wait1
цикл сразу переходит на :wait2
.Однако, поскольку START date.vbs
выполняет VBScript асинхронно в фоновом режиме, скорее всего, сценарий еще не завершился, когда ваш цикл for
читает dateextracted.txt
.В этой ситуации цикл читает пустой файл и поэтому не определяет переменную %dateextracted%
.Это, в свою очередь, приводит к тому, что последующая команда echo
отображает статус эха, потому что команда вызывается без аргумента из-за неопределенной переменной.
Вы можете решить проблему, выполнив date.vbs
синхронно, используя командуcscript.exe
интерпретатор вместо значения по умолчанию wscript.exe
.Измените это:
echo. > dateextracted.txt
START date.vbs
goto wait1
:wait1
if exist dateextracted.txt goto wait2
goto wait1
:wait2
for /f "Delims=" %%a in (dateextracted.txt) do (
set dateextracted=%%a
)
на это:
echo. > dateextracted.txt
cscript.exe //NoLogo date.vbs
for /f "Delims=" %%a in (dateextracted.txt) do (
set "dateextracted=%%a"
)