アプリ版:「スタンプのみでお礼する」機能のリリースについて

バッチファイルで最新の現在時刻を表示したいのですが、うまく行きません。

そのバッチファイル自体を実行した時刻ではなく、そのバッチファイル内のコマンド等を実行した時刻を表示させたいのです。つまりどんどん時間を最新に近いものに更新させていって欲しいのです。

タスクスケジューラのようなものをバッチファイルで作りたくて、現在時刻が○○時であればこのコマンドを実行する、といったことがしたい訳です。

バッチファイルは実行してすぐ終了するのではなく、そのまま常駐するような形を想定しています。

なにか良い方法はないでしょうか。


■ 5秒おきに現在時刻を表示するバッチファイルの例 (同じ時刻になってしまう)

@echo off
:start
set time=%time: =0%
echo .
echo .
echo .「現在時刻は%time:~-11,2%時%time:~-8,2%分%time:~-5,2%秒です。」
echo .
echo .
ping localhost -n 5
goto start

A 回答 (1件)

>set time=%time: =0%



せっかく、動的な時刻を返してくれる time という環境変数があるのに、それを上書きしてしまっているからです。変数名を変えてください。
set t=%time: =0%
など。

set /? の後ろの方に説明があります。

>これらの変数の値は、変数の値が展開されるときに動的に計算されます。
>ユーザーがこれらの名前の変数を明示的に定義する場合、その定義は下記の動的な定義を無効にします。
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。

環境変数「time」を上書きしてしまっていた為、このような事が起こっていたのですね。よく分かりました。ありがとうございました。

私が環境変数「time」を使い始めたきっかけが、ファイル名に現在日時を入れたいという理由だったので、その時にファイル名に半角スペースが入ってしまい、あまりファイル名として好ましくないと思ったので、自分の中の決まり事として、環境変数「time」を使う場合は必ず「set t=%time: =0%」を使うように心掛けていました。でもそれが今回裏目に出た様です。

インターネットで検索したのですが、今回の解決策に辿りつけませんでした。なので大変助かりました。ご回答、本当にありがとうございました。

お礼日時:2013/04/14 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!