2009-05-24 31 views
14

我正在腳本化一個大批處理文件。在批處理文件中顯示來自.txt文件的文本

它記錄的日期爲log.txt文件:

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

它可以多次,記錄它在幾行。現在我想要做的是批處理文件文件顯示log.txt文件中最後記錄的日期/時間。

怎麼樣?

+0

好問題。我昨天剛剛寫了第一篇稍微先進的批處理腳本,我很享受它。批處理腳本很有趣,也是一個非常強大的工具,但我也發現一些簡單的任務非常難以實現。 – 2009-05-24 10:43:13

+1

當然,真正的答案是:如果它需要任何批處理不能用簡單的單行表達式處理的任何內容,只需編寫一個小程序即可。它並沒有傷害;) – viraptor 2009-05-24 21:23:48

回答

5

嗯..只找到了回答。然後我覺得更容易。它只是需要一堆更多的東西:

@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的進入。) (這個問題解決和編輯。)

24
type log.txt 

但是,這會給你整個文件。您可以將其更改爲:

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

僅獲取最後一個。

+0

它可以只從log.txt文件而不是最後一行,但上面的那一行?我聽說過FINDSTR的一些事情,但我不想找到它。 – 2009-05-24 10:59:23

+0

我明白你在說什麼,但它應該一次又一次的完成......像100x ......儘可能多的。我想發佈這個,它會非常棒。 – 2009-05-24 11:21:55

3
+0

如何使用它? – 2009-05-24 11:01:07

+0

tail -1 log.txt – SqlACID 2009-05-24 11:55:21

+0

工程,但是...我現在自己工作,沒有任何額外的工具... – 2009-08-18 12:01:11

1

的tail.exe試試這個:使用查找通過與「當前日期/時間」的所有行進行迭代,每行寫同一個文件:

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

將delims =設置爲與日期/時間線不相關的字符。在批處理文件中使用%%我。

解釋(更新):

查找提取從log.txt中包含搜索字符串的所有行。

對於/ f循環通過每行內部的命令(...)生成。

回聲>登錄TIME.TXT(單>!)覆蓋每一個它的執行時間登錄TIME.TXT,只有最後一個匹配線保持在數TIME.TXT

1

這裏有沒有按版本如果log.txt缺少「T失敗:


@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

好吧,我不知道,當是使用,但是,這裏有兩個snipets你可以使用:

lastlog.cmd

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

更改「回聲..」一行,但最後的日誌時間在%TimeStamp%。沒有臨時文件使用,沒有混亂和可重用,因爲它是在一個變量。

在另一方面,如果你需要知道這一點在你的代碼,而不是從另一個批處理,改變你的日誌記錄:

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

,使得可變%時間戳%可用後,當你需要它。

1

一個方便的時間戳格式:

%date:~3,2%/%date:~0,2%/%date:~6,2%-%time:~0,8% 
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

0
@echo off 
set log=%time% %date% 
echo %log% 

這是一個用於將日期和時間保存爲臨時變量並顯示它的批處理。 匆忙,我沒有時間寫一個腳本來打開一個TXT,也許以後。

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 

在fromt的它擺脫了蹩腳的C:/ users/example /的每一件事... ...

and put

cls 

之後:top清除屏幕之前它將新的日期和時間添加到顯示屏

相關問題