Я столкнулся с ошибкой в моем сценарии DOS, которая использует данные даты и времени для именования файлов. Проблема заключалась в том, что у меня был пробел, потому что переменная времени не обеспечивала автоматически нулевой начальный угол в течение часа <10. Таким образом, запуск> echo% time% возвращает: «9: 29: 17.88».
Кто-нибудь знает способ условно дополнить ведущие нули, чтобы исправить это?
Больше информации: Моя команда установки имени файла:
set logfile=C:\Temp\robolog_%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.log
который заканчивается: C: \ Temp \ robolog_20100602_ 93208.log (для 9:23 утра).
Этот вопрос связан с этим .
Благодарность
Ответы:
Очень простой способ - просто заменить начальный пробел на ноль:
echo %TIME: =0%
output:
09:18:53,45
источник
set HH=%time:~-11,2% set MM=%time:~-8,2% set SS=%time:~-5,2% set ISOTIME=%HH: =0%-%MM%-%SS% echo %ISOTIME%
также см. Ss64.com/nt/syntax-replace.htmlset timestring=%TIME: =0%
начале вызова sub - затем просто поработайте с нимtimestring
(или с любой переменной, которую вы используете).Моим решением было использовать следующую идею:
источник
but gives syntax error on server 2003
- почему тебя это волнует в 2016 году?Идея похожа на ответ Дениса . Проблема в том, что ширина
%time%
всегда одна и та же, поэтому она вставляет пробел в начало, а не возвращает более короткую строку.Вы можете избавиться от этого с помощью
for
:Остальное более или менее то же самое.
источник
Используя вклад Джесси, я только что создал переменную с измененным выводом. Затем я ссылаюсь на эту переменную, чтобы построить часовую часть.
С первоисточником:
Спасибо Джесси. Я бы проголосовал, если бы у меня были очки репутации.
источник
Для наиболее компактного решения, реализующего все вышеперечисленное, я думаю, что
будет работать здесь без добавления каких-либо новых строк в сценарий. Это, возможно, менее элегантно, чем решения с несколькими командами, хотя ..
источник
Следующее занимает еще несколько строк, но ясно и понятно. Он сохраняет stdout и stderr в отдельных файлах, каждый с отметкой времени. Отметка времени включает год, месяц, день, час, минуту и секунду в указанном порядке. Временные метки всегда должны иметь самый старший компонент даты первым (год) и наименьший компонент (секунды) последним. Это позволяет спискам файлов быть в порядке времени. Без дальнейших церемоний, вот мое решение.
источник
Это привязывает ноль к началу времени и принимает последние две цифры часа (минутная и вторая стартовые позиции смещены на одну). Таким образом, 3 часа утра становится «03», затем «03», а час 15 становится «015», а затем «15».
Менее читабельно:
источник
Одна строка кода будет делать то, что вам нужно:
Например, я использую% Date%, а затем добавляю начальный ноль к переменной, которую я использую, чтобы определить, нужно ли заменить начальный пробел нулем для% Time%.
источник
Это создает сортируемую временную метку, а вторая строка обеспечивает отсутствие пробелов для однозначного часа и т. Д., Чтобы сделать ее пригодной для использования в сценариях:
Выход:
источник
Благодаря помощи сверху ... Вот что я использую:
Затем у меня есть журналы, которые вызываются в заданиях Robocopy:
Есть много таких:
Заканчивается работа с этим:
COMPLETE_LOG_2018-06-27_10_53_54.log
это файл, созданный в конце, и он сортируется по имени файла.источник
Ответ Джесси решил мою проблему с переименованием файлов, исключив пробел в поле часа. Вот как я устанавливаю свои переменные:
Это работает как чемпион; По какой-то причине дата не нуждалась в таком же лечении, но я думаю, что это зависит от региональных условий.
источник
источник
источник