19

我正在编写一个大批处理文件。

它将日期记录到 log.txt 文件中:

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

它可以在几行上记录多次。现在我想做的是批处理文件显示 log.txt 文件中最后记录的日期/时间。

如何?

4

10 回答 10

34
type log.txt

但这会给你整个文件。您可以将其更改为:

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

只得到最后一个。

于 2009-05-24T10:34:31.867 回答
7

嗯..刚刚找到答案。这比我想的要容易。它只需要更多的东西:

@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中输入随机值。)(这个问题已解决并编辑。)

于 2009-05-24T11:28:11.837 回答
3

使用Windows 2003 资源工具包中的 tail.exe

于 2009-05-24T10:41:35.550 回答
1

试试这个:使用 Find 遍历具有“当前日期/时间”的所有行,并将每一行写入同一个文件:

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

将 delims= 设置为与日期/时间行不相关的字符。在批处理文件中使用 %%i。

说明(更新):

Find 从 log.txt 中提取包含搜索字符串的所有行。

For /f 循环遍历 ( ) 内的命令生成的每一行...

由于 echo > log-time.txt (single > !) 每次执行时都会覆盖 log-time.txt,因此 log-time.txt 中只保留最后一个匹配行

于 2009-05-24T10:58:09.603 回答
1

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
于 2009-05-24T12:12:16.773 回答
1

好的,我想知道什么时候使用,但是,这里有两个你可以使用的片段:

最后的日志.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% 。

于 2009-08-28T12:08:24.240 回答
1

一种方便的时间戳格式:

%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8%
于 2009-09-24T12:54:15.597 回答
1

只需将时间和日期设置为变量,如果它将处于循环中然后

: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将新的日期和时间添加到显示之前清除屏幕

于 2013-12-29T04:34:19.370 回答
0

这是一个很好的日期和时间代码:

@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

输出:日期是 2009 年 9 月 27 日星期日,当前时间是:3:07

于 2009-09-27T07:08:56.507 回答
0
@echo off
set log=%time% %date%
echo %log%

那是将日期和时间保存为临时变量并显示它的批处理。赶时间,没时间写脚本打开一个txt,可能以后再说吧。

于 2011-11-22T18:17:31.617 回答