Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 在批处理文件中显示.txt文件中的文本_Text_Batch File_Text Files - Fatal编程技术网

Text 在批处理文件中显示.txt文件中的文本

Text 在批处理文件中显示.txt文件中的文本,text,batch-file,text-files,Text,Batch File,Text Files,我正在编写一个大批量文件的脚本 它将日期记录到log.txt文件中: @echo off echo %date%, %time% >> log.txt echo Current date/time is %date%, %time%. @pause exit 它可以在几行上记录几次。现在我想做的是批处理文件显示log.txt文件中最后记录的日期/时间 怎么做 但这会给你整个文件。您可以将其更改为: echo %date%, %time% >> log.txt echo

我正在编写一个大批量文件的脚本

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

@echo off
echo %date%, %time% >> log.txt
echo Current date/time is %date%, %time%.
@pause
exit
它可以在几行上记录几次。现在我想做的是批处理文件显示log.txt文件中最后记录的日期/时间

怎么做

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

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

要仅获取最后一行。

请使用

中的tail.exe尝试以下操作:使用“查找”遍历所有带有“当前日期/时间”的行,并将每一行写入同一文件:

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中提取包含搜索字符串的所有行

对于通过每行的/f循环,内部(
)命令生成


由于每次执行时echo>log-time.txt(single>!)都会覆盖log-time.txt,因此log-time.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中输入随机值。)
(此问题已解决并已编辑。)

如果缺少
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

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

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%可在以后需要时使用。

方便的时间戳格式:

%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8%

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

@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文件,也许以后再写。

只要将时间和日期设置为变量,如果它将是一个循环中的东西,那么就可以了

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

好问题。就在昨天,我写了我的第一个有点高级的批处理脚本,我很喜欢它。批处理脚本编写很有趣,也是一个非常强大的工具,但我也发现一些简单的任务很难实现。当然,真正的答案是:如果它需要批处理无法在简单的单行表达式中处理的任何内容,只需编写一个小程序即可。不痛;)它能不能从log.txt文件中得到,不是最后一行,而是上面的那一行?我听说了一些关于FINDSTR的事情,但我不想找到它。我理解你的意思,但它应该一次又一次地这样做。。。像100倍。。。尽可能多。我想发表这篇文章,这将是非常棒的。您能详细解释一下它的作用吗?如果这确实解决了您的问题,那么您不应该在日志文件中附加(>>)。但是,根据最初的问题陈述,您似乎希望保留历史记录,而不是每次都删除它。这将只将当前日期/时间写入log.txt,而不会像最初的问题所要求的那样从原始日志文件中检索任何内容。请注意,
TYPE
不再可用,改用
打印
。不适用于7。Get:'日期是,0-,009当前时间是:12:00这可能是因为我的windows使用的是另一种语言?但这不是获取日志文件最后一行的问题的答案
cls