我正在编写一个大批处理文件。
它将日期记录到 log.txt 文件中:
@echo off
echo %date%, %time% >> log.txt
echo Current date/time is %date%, %time%.
@pause
exit
它可以在几行上记录多次。现在我想做的是批处理文件显示 log.txt 文件中最后记录的日期/时间。
如何?
我正在编写一个大批处理文件。
它将日期记录到 log.txt 文件中:
@echo off
echo %date%, %time% >> log.txt
echo Current date/time is %date%, %time%.
@pause
exit
它可以在几行上记录多次。现在我想做的是批处理文件显示 log.txt 文件中最后记录的日期/时间。
如何?
type log.txt
但这会给你整个文件。您可以将其更改为:
echo %date%, %time% >> log.txt
echo %date%, %time% > log_last.txt
...
type log_last.txt
只得到最后一个。
嗯..刚刚找到答案。这比我想的要容易。它只需要更多的东西:
@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中输入随机值。)(这个问题已解决并编辑。)
试试这个:使用 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 中只保留最后一个匹配行
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
好的,我想知道什么时候使用,但是,这里有两个你可以使用的片段:
最后的日志.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% 。
一种方便的时间戳格式:
%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8%
只需将时间和日期设置为变量,如果它将处于循环中然后
: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
将新的日期和时间添加到显示之前清除屏幕
这是一个很好的日期和时间代码:
@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
@echo off
set log=%time% %date%
echo %log%
那是将日期和时间保存为临时变量并显示它的批处理。赶时间,没时间写脚本打开一个txt,可能以后再说吧。