Отображать текст из .txt файла в пакетном файле - PullRequest
14 голосов
/ 24 мая 2009

Я пишу большой пакетный файл.

Записывает дату в файл log.txt:

@echo off
echo %date%, %time% >> log.txt
echo Current date/time is %date%, %time%.
@pause
exit

Он может записывать его несколько раз в несколько строк. Теперь я хочу, чтобы файл командного файла отображал дату и время последней записи из файла log.txt.

Как?

Ответы [ 10 ]

28 голосов
/ 24 мая 2009
type log.txt

Но это даст вам весь файл. Вы можете изменить его на:

echo %date%, %time% >> log.txt
echo %date%, %time% > log_last.txt
...
type log_last.txt

, чтобы получить только последний.

6 голосов
/ 24 мая 2009

хм .. только что нашел ответ. это проще, чем я думал. ему просто нужно больше вещей:

@echo off
if not exist log.txt GOTO :write
echo Date/Time last login:
type log.txt
del log.txt
:write
echo %date%, %time%. >> log.txt
@pause
exit

Итак, сначала он читает файл log.txt и удаляет его. После этого он просто получает новый файл (log.txt) с датой и временем!

Надеюсь, это поможет другим людям!

(единственная проблема заключается в том, что в первый раз это не работает, а затем просто введите случайное значение в log.txt.) (Эта проблема решена и отредактирована.)

3 голосов
/ 24 мая 2009

Используйте tail.exe из Windows 2003 Resource Kit

1 голос
/ 29 декабря 2013

Просто установите время и дату для переменных, если это будет что-то, что будет в цикле, тогда

:top
set T=%time%
set D=%Date%

echo %T%>>log.txt
echo %d%>>log.txt
echo time:%T%
echo date:%D%
pause
goto top

Я предлагаю сделать его красивым и чистым, поставив:

@echo off

перед всеми вещами избавляется от мусора C: / users / example /...

и сдача

cls

после :top для очистки экрана перед добавлением новой даты и времени на дисплей

1 голос
/ 24 сентября 2009

Удобный формат отметки времени:

%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8%
1 голос
/ 28 августа 2009

Хорошо. Интересно, когда это нужно, но вот два фрагмента, которые вы можете использовать:

lastlog.cmd

@echo off
for /f "delims=" %%l in (log.txt) do set TimeStamp=%%l
echo %TimeStamp%

Измените строку "echo ..", но время последнего журнала находится в пределах % TimeStamp% . Не используются временные файлы, нет беспорядка и многократного использования, как в переменной.

С другой стороны, если вам нужно знать это ВНУТРИ своего кода, а не из другого пакета, измените запись в журнале на:

set TimeStamp=%date%, %time%
echo %TimeStamp% >> log.txt

, чтобы переменная % TimeStamp% могла использоваться позже, когда вам это нужно.

1 голос
/ 24 мая 2009

Вот версия, которая не дает сбоя, если log.txt отсутствует:


@echo off
  if not exist log.txt goto firstlogin
  echo Date/Time last login:
  type log.txt
  goto end

:firstlogin
  echo No last login found.

:end
  echo %date%, %time%. > log.txt
  pause
1 голос
/ 24 мая 2009

Попробуйте: используйте Find, чтобы перебрать все строки с «Текущей датой / временем» и записать каждую строку в один и тот же файл:

for /f "usebackq delims==" %i in (`find "Current date" log.txt`) do (echo %i > log-time.txt)
type log-time.txt

Установить разделители = для символа, не относящегося к линии даты / времени. Используйте %% i в пакетных файлах.

Пояснение ( обновление ):

Найти извлекает все строки из log.txt, содержащие строку поиска.

Для / f проходит через каждую строку, которую генерирует команда внутри (...).

Поскольку echo> log-time.txt (single>!) Перезаписывает log-time.txt при каждом запуске, в log-time остается только последняя совпадающая строка.

0 голосов
/ 22 ноября 2011
@echo off
set log=%time% %date%
echo %log%

Это пакет для сохранения даты и времени во временной переменной и их отображения. В спешке у меня нет времени написать скрипт для открытия txt, может позже.

0 голосов
/ 27 сентября 2009

Вот хороший код даты и времени:

@echo off
if %date:~4,2%==01 set month=January
if %date:~4,2%==02 set month=February
if %date:~4,2%==03 set month=March
if %date:~4,2%==04 set month=April
if %date:~4,2%==05 set month=May
if %date:~4,2%==06 set month=June
if %date:~4,2%==07 set month=July
if %date:~4,2%==08 set month=August
if %date:~4,2%==09 set month=September
if %date:~4,2%==10 set month=October
if %date:~4,2%==11 set month=November
if %date:~4,2%==12 set month=December

if %date:~0,3%==Mon set day=Monday
if %date:~0,3%==Tue set day=Tuesday
if %date:~0,3%==Wed set day=Wednesday
if %date:~0,3%==Thu set day=Thursday
if %date:~0,3%==Fri set day=Friday
if %date:~0,3%==Sat set day=Saturday
if %date:~0,3%==Sun set day=Sunday
echo.
echo The Date is %day%, %month% %date:~7,2%, %date:~10,4% the current time is: %time:~0,5%
pause

Выходы: Дата: воскресенье, 27 сентября 2009 г., текущее время: 3: 07

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...