Форматирование даты и времени в командном файле с помощью Powershell
Я хочу назвать файл, используя текущую дату и время в определенном формате.
Для этого у меня есть следующий код для установки %datetime%
в формате, который я хочу.
Пример: 2017-06-19 05_00_00
for /f %%a in ('powershell -Command "Get-Date -format yyyy-MM-dd\ HH_mm_ss"') do set datetime=%%a
Это не совсем работает. Я на 99% уверен, что это связано с промежутком между датой и временем, который я хочу.
В чем ошибка и как ее можно исправить?
(Обратите внимание, что я не могу зависеть от доступности WMIC, поэтому вызов Powershell, вероятно, является лучшим решением. Несмотря на это, мне интересно узнать, как заставить этот конкретный код работать.)
1 ответ
Решение
Вы можете попробовать с любым из этих
for /f "delims=" %%a in ('
powershell -Command "Get-Date -format 'yyyy-MM-dd HH_mm_ss'"
') do set "datetime=%%a"
for /f "tokens=*" %%a in ('
powershell -Command "Get-Date -format 'yyyy-MM-dd HH_mm_ss'"
') do set "datetime=%%a"
for /f "tokens=1,2" %%a in ('
powershell -Command "Get-Date -format 'yyyy-MM-dd HH_mm_ss'"
') do set "datetime=%%a %%b"
Отличия от исходного кода
- Строка формата была заключена в кавычки
for /f
Команда токенизирует строки, обрабатываемые с использованием пробелов и табуляций в качестве разделителей, извлекая по умолчанию только первый токен в строке (в вашем случае, дату). Поскольку ваш вывод содержит два разделенных пробелом токена, нам нужно отключить токенайзер (первый пример, очистив список разделителей), запросить все токены в строке (второй пример) или запросить только необходимые токены (третий пример)