Я понимаю, что это спорный вопрос к ФП, но я просто заварил это, и я немного горжусь тем, что мыслил нестандартно.
Скачать gawk для Windows на http://gnuwin32.sourceforge.net/packages/gawk.htm .... Тогда это одна строка, без всего этого неуклюжего синтаксиса пакета DOS, где требуется шесть циклов FOR для разделения строк (WTF ? Это действительно очень плохо и плохо! ... ИМХО конечно)
Если вы уже знаете, C, C ++, Perl или Ruby, то подбор AWK (который наследует от первых двух и вносит значительный вклад в последние два) - это часть общеизвестного пирога! !!
Пакетная команда DOS:
echo %DATE% %TIME% && echo %DATE% %TIME% | gawk -F"[ /:.]" "{printf(""""%s%02d%02d-%02d%02d%02d\n"""", $4, $3, $2, $5, $6, $7);}"
Печать:
Tue 04/09/2012 10:40:38.25
20120904-104038
Теперь это не совсем полная история ... Я просто буду ленивым и жестко закодирую остальную часть моего лог-файла в выражении printf, потому что это просто ... Но если кто-нибудь знает, как чтобы установить переменную% NOW% для вывода AWK (получая смелость «универсальной» функции now), тогда я - все уши.
EDIT:
Быстрый поиск по переполнению стека, заполнивший последний фрагмент головоломки, Пакетный эквивалент обратных черт Bash .
Итак, эти три строки пакета DOS:
echo %DATE% %TIME% | awk -F"[ /:.]" "{printf(""""%s%02d%02d-%02d%02d%02d\n"""", $4, $3, $2, $5, $6, $7);}" >%temp%\now.txt
set /p now=<%temp%\now.txt
echo %now%
Produce:
20120904-114434
Так что теперь я могу включить datetime в имя файла журнала, созданного моим сценарием установки SQL Server (2005+), таким образом:
sqlcmd -S .\SQLEXPRESS -d MyDb -e -i MyTSqlCommands.sql >MyTSqlCommands.sql.%now%.log
И я снова счастливый путешественник (за исключением того, что жизнь в SOOOOO была намного проще в Unix).