Чтобы добавить в файл дату и время, можно воспользоваться следующим командным файлом, который переименовывает имя файла в имя формата filename_YYYYMMDDHHMM:
@Echo OFF
TITLE DateName
REM DateName.CMD
REM имя файла представляет переменная %1, которая будет преобразована в формат REM %1_YYMMDDHHMM
REM
REM—————————————————————————-
IF %1.== GoTo USAGE
Set CURRDATE=%TEMP%\CURRDATE.TMP
Set CURRTIME=%TEMP%\CURRTIME.TMP
DATE /T > %CURRDATE%
TIME /T > %CURRTIME%
Set PARSEARG=”eo1=; tokens=1,2,3,4* delims=/, “
For /F %PARSEARG% %%i in (%CURRDATE%) Do SET YYYYMMDD=%%1%%k%%j
Set PARSEARG=”eo1=; tokens=1,2,3* delims=:, “
For /F %PARSEARG% %%i in (%CURRTIME%) Do SET HHMM=%%i%%j%%k
Echo RENAME %1 %1_%YYYYMMDD%%HHMM%
RENAME %1 %1_%YYYYMMDD%%HHMM%
GoTo END
:USAGE
Echo Usage: DateName filename
Echo Renames filename to filename_YYYYMMDDHHMM
:END
REM
TITLE Command Prompt
Например:
D:\Gogo> datatype logfile.log
RENAME logfile.log logfile.log_199809281630
Существует возможность использовать другой метод, не требующий создания временных файлов (ведущий ноль добавляется для времени, менее 10-ти часов):
for /f “tokens=1,2” %%u in (‘date /t’) do set d=%%v
for /f “tokens=1” %%u in (‘time /t’) do set t=%%u
if “%t:~1,1%”==”:” set t=0%t%
set timestr=%d:~6,4%%d:~3,2%%d:~0,2%%t:~0,2%%t:~3,2%
echo %timestr%
Еще один вариант заключается в применении утилиты LOGTIME.EXE, которая дает возможность указать строку и затем записать время, указанное в строке, в файл LOGTIME.LOG в текущем каталоге, принятом по умолчанию. Кроме того, есть утилита NOW.EXE, которая заменяется в строке вызова на дату и время. Например:
D:\temp>now Batch complete
Mon Sep 28 15:54:19 2008 – Batch complete
Утилиты LOGTIME.EXE и NOW.EXE поставляются в пакете Resource Kit.
Следующим способом является использование команды FOR. Файл журнала можно создать с использованием текущей даты в имени файла:
rem созданное уникальное имя файла журнала, например, Wed0804
FOR /F “tokens=1-4 delims=/” %%i in (‘date/t’) do set file=%%i%%j%%k
Set LOG=drive:\directory\filename-%file%.log
Имя файла получит следующий формат: FILENAME-DATE.LOG. Этот метод является более простым и прекрасно работает.
Иногда имеет смыл применять следующую команды, которая добавляет в конец файла текущее время (однако, также выдается сообщение об удачном завершении операции, поэтому один из предыдущих методов является более предпочтительным):
net time >> file.txt
И, наконец, обратите внимание на такую команду:
Echo|more|time|find "current" >> file.txt