web-dev-qa-db-ja.com

.txtファイルのテキストをバッチファイルに表示する

大きなバッチファイルのスクリプトを作成しています。

日付をlog.txtファイルに記録します。

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

それは数回、数行に記録することができます。次に、バッチファイルファイルに、log.txtファイルから最後に記録された日付/時刻が表示されるようにします。

どうやって?

15
Deniz Zoeteman

うーん..ちょうど答えを見つけました。それは私が思ったより簡単です。それはもっとたくさんのものを必要とするだけです:

@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にランダムな値を入力することだけです。)(この問題は解決および編集されています。)

7
Deniz Zoeteman
type log.txt

しかし、これでファイル全体が得られます。次のように変更できます。

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

最後の1つだけを取得します。

30
viraptor

Windows 2003 Resource Kit のtail.exeを使用します

3
SqlACID

便利なタイムスタンプ形式:

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

わかりました、いつ使用しますか?

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
Jay

これを試してください:Findを使用して、「現在の日付/時刻」ですべての行を反復処理し、各行を同じファイルに書き込みます。

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

Delims =を日付/時刻行に関係のない文字に設定します。バッチファイルで%% iを使用します。

説明(pdate):

Findは、検索文字列を含むlog.txtからすべての行を抽出します。

/ fの場合、各行のループ内のコマンド(...)が生成されます。

Echo> log-time.txt(単一>!)は、実行されるたびにlog-time.txtを上書きするため、最後に一致した行のみがlog-time.txtに残ります

1
devio

それがループになるものになる場合は、時刻と日付を変数に設定するだけです

: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
graml

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
Anders Sandvig

ここに良い日付と時刻コードがあります:

@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
BnryZombie
@echo off
set log=%time% %date%
echo %log%

これは、日付と時刻を一時変数として保存して表示するためのバッチです。急いで、おそらく後で、txtを開くスクリプトを書く時間はありません。

0
Daniel Isaksen