• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチファイルの時刻)

バッチファイルの時刻

このQ&Aのポイント
  • バッチファイルの時刻を表示する際、開始時刻と終了時刻が同じになってしまう問題が発生します。
  • 指定した時間の待機後、時刻を表示するバッチファイルですが、開始時刻と終了時刻が一致しません。
  • バッチファイルで時刻を表示すると、開始時刻と終了時刻が同じになる現象が起こります。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

setlocal ENABLEDELAYEDEXPANSION は、setlocalという内部コマンドを、ENABLEDELAYEDEXPANSION という引数付きで 実行することです。 このことにより環境変数の値が勝手に変わることはありません。 %環境変数%の他に、!環境変数!と書いたときも 環境変数の内容の展開を行うようになり、 そのタイミングが、バッチファイルの読み込み時ではなく その行実行時に行われるということだけです。 詳しくは setlocal /? ででてくるヘルプを参照してください。

olive_surf
質問者

お礼

そういうことだったのですね。 ご教授ありがとうございました。 勉強になりました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

%time% の時刻文字列への展開のタイミングが、 それぞれの行へ到達した時点ではなく、 ()ないのサブテキストが読み込まれた時点で一度に行われてしまうために、これら二つの内容が同じになってしまいます。 これを避け、希望の結果を得るには バッチファイルの先頭または@echo off行の後に setlocal ENABLEDELAYEDEXPANSION という行を追加し、 > echo %time% 終了 この行を > echo !time! 終了 のように変更します。 詳しくは set /? cmd /? あるいは cmd.exe 遅延評価 環境変数 といったキーワードの組み合わせで検索してみてください。

olive_surf
質問者

お礼

sakusaker7さん 回答ありがとうございます。 setlocal ENABLEDELAYEDEXPANSION について質問させてください。 これは、環境変数の値を変更するということですか? この設定をすることでdefault値が変わる等はないでしょうか?

関連するQ&A