У меня есть часть скрипта, предназначенная для удаления «:» из времени и «/» из даты, возвращаемой командами time / t и date / t. Если я выполню команду в командной строке (cmd.exe), будут возвращены ожидаемые значения:
C: \ Windows \ system32> время / т
02:49
C: \ Windows \ system32> date / t
Вт 07/03/2018
Если я помещу те же команды в начале моего пакетного сценария, я получу ожидаемые результаты. Однако, если я помещу ту же команду в оператор for, чтобы разобрать «:» и «/». Я получаю следующие сообщения:
'date / t' не распознается как внутренняя или внешняя команда,
работоспособная программа или командный файл.
'time / t' не распознается как внутренняя или внешняя команда,
работающая программа или командный файл.
Запуск команды for вне командного файла работает нормально. Я заново создал пакетный файл, чтобы не было случайных нечетных символов.
Вот сам скрипт:
time /t
date /t
for /F "Tokens=2,3,4 delims=/ " %%a in ('date /t') Do Set _cdate=%%c%%a%%b
for /F "Tokens=1,2,3 delims=: " %%a in ('time /t') Do Set _ctime=%%a%%b%%c
pause
Этот же скрипт прекрасно работает как на другом сервере, так и на моем рабочем столе. Я в недоумении относительно того, что отличает этот новый сервер. (Помимо одного 32-битный) COMSPEC является правильным. (C: \ Windows \ system32 \ cmd.exe) Эти команды являются частью более крупного сценария, предоставляющего префикс имени файла для ведения журнала.