• ベストアンサー

バッチを1行記述した時の %TIME% について

Uncle_Johnの回答

回答No.4

バッチファイルはインタープリタ系プログラム、コンパイラ系プログラムと異なります。 一行、読み込みその度に機械語に変換し処理します。処理後、次の行に移ります、 よって同じ行の時間は同じになります。 二行にするしか方法はありません。

HIROKW
質問者

お礼

ありがとうございます。 2行にしたら、確かに同じ時間にはなりませんでした。 しかし、当初の1行打って…は達成できないみたいですね。

Powered by GRATICA

関連するQ&A

  • バッチファイルで常に最新の現在時刻を表示したい

    バッチファイルで最新の現在時刻を表示したいのですが、うまく行きません。 そのバッチファイル自体を実行した時刻ではなく、そのバッチファイル内のコマンド等を実行した時刻を表示させたいのです。つまりどんどん時間を最新に近いものに更新させていって欲しいのです。 タスクスケジューラのようなものをバッチファイルで作りたくて、現在時刻が○○時であればこのコマンドを実行する、といったことがしたい訳です。 バッチファイルは実行してすぐ終了するのではなく、そのまま常駐するような形を想定しています。 なにか良い方法はないでしょうか。 ■ 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

  • バッチファイルの時刻

    下記は、6秒待って時刻を表示するのを繰り返す記述ですが、 「開始」の時間と「終了」の時間が同じになってしまいます。 【コード】 -------------------------------------------------- :flg_check if exist %FlgFile% ( echo %time% 開始 echo WScript.Sleep 6000 > %TmpFile% cscript //NoLogo %TmpFile% echo %time% 終了 goto flg_check ) -------------------------------------------------- 【結果】 -------------------------------------------------- 10:26:14.30 開始 10:26:14.30 終了 10:26:20.41 開始 10:26:20.41 終了 -------------------------------------------------- 開始時刻の6秒後の時刻が終了時刻にならないのですが、なぜでしょうか?

  • バッチファイルが不正終了してしまう行をつきとめたい

    長いバッチファイルを実行中、途中で不正終了してしまう場合に、そのバッチファイルの何行目を実行した時に不正終了したのかをつきとめたいのですが、何か方法はあるでしょうか。 又は、現在バッチファイルの何行目であるかを表示するコマンド等無いでしょうか。 ご存知の方がおられましたら、宜しくお願い致します。

  • バッチファイルについて

    @cmd /k 上記の内容で「a.bat」というファイル名で保存しました。 この保存したファイルをダブルクリックすると、バッチファイルが格納されてるフォルダのパスがコマンドプロンプト上に表示されます。 パス表示後に、いろいろな動作(「echo~」など)を実行したいと思っているんですが、うまくいきません。 どうやら一番上の「@~」を記述したものは、そのあとに「echo~」などを記述しても実行してくれないみたいです。 「@cmd /k」実行後に何か(「echo~」など)を実行するにはどうしたらいいですか?

  • Win2K8 R2のタスクでバッチが動作しない

    Windows2008 R2のタスクスケジューラでバッチファイルが実行できない状態に陥っています。 環境・状況等は以下のとおりです。 ・バッチファイルを単体で実行させたときには、問題なく実行できる。 ・ネットワーク上のサーバのあるフォルダをrobocopyするジョブ。 ・タスクスケジューラから実行できている他のバッチファイルを流用して作成。(このジョブも別のサーバのバックアップをしている) ・実行結果は、0x1。 ・タスクスケジューラ登録時には、administratorで登録し、パスワードも入れている。 問題のバッチファイルを直接叩いたときには、何のエラーもなく、約3時間要するrobocopyでのバックアップが稼動しますが、 タスクスケジューラに登録して実行しようとすると、タスクスケジューラの履歴をみると、スタートはしているがすぐに終了して おり、バッチファイル内に記述したrobocopyが稼動していないようです。 バッチファイルの内容は ----------------------- @echo off set LOGFILE=c:\bat\fd_backup\backup.log date /t>%LOGFILE% echo 開始時刻>>%LOGFILE% time /t>>%LOGFILE% echo. >>%LOGFILE% echo Run backup.bat>>%LOGFILE% echo. >>%LOGFILE% ROBOCOPY \\server1\backup\ D:\BACKUP\server1-back\ /MIR /NP /FP /TS /COPYALL /TEE /R:0 /LOG+:%LOGFILE% echo. >>%LOGFILE% echo 終了時刻>>%LOGFILE% time /t>>%LOGFILE% ------------------------- もうひとつ登録してあるバッチファイルは、robocopyの全く同じコマンドで、対象としているサーバと保存先やログファイル名が 異なるだけで問題なくタスクとして稼動しています。 ネット上でいろいろと調べてチェックしてみましたが、おかしいところが見当たらず、困っています。 アドバイスよろしくお願い致します。

  • バッチファイル処理

    バッチファイルの処理の処理速度についてどなたか教えてください。 ある同一のコマンドをよびだすのに、バッチファイル単体で実行する場合と、プログラムからCreateProcessで呼び出す場合の処理速度を比較したのですが、だいぶ異なります。 プログラムで呼び出したいのですが、処理速度が遅くて使いものにならないため、速度UPをしたいのですが、この違いはなにが原因でしょうか。 計測方法は以下です。 ●バッチファイル単体→バッチファイルの中で計測(1秒程度でおわる) ●プログラムからCreateProcessで呼び出し→WaitForSingleObjectでプロセスが終了するまでの時間を計測(10秒ぐらいかかる) それぞれのバッチファイルの中身は以下のとおりです。 (2つのVSSコマンドをコマンドラインから実行するものです) ●バッチファイル単体 ...省略 set time1=%TIME::=% set time1=%time1:~0,10% echo Start %time1% >> %fileLog% 2>&1 ss cp %project% -YAA,BB >> %fileLog% 2>&1 ss add %folder%\%fileAdd% -YAA,BB -I- >> %fileLog% 2>&1 set time2=%TIME::=% set time2=%time2:~0,10% echo End %time2% >> %fileLog% 2>&1 ●プログラムからCreateProcessで呼び出しているbatファイル ss cp $/test/ -YAA,BB ss add C:\Test\test.dat -YAA,BB -I- 2> C:\Temp\ErrorAdd.txt

  • バッチ(bat)の作り方を教えてください

    今、特定フォルダ内にあるファイル3つが存在すればコマンドを実行し、無ければ4時までループさせるといったことをバッチでしたいと考えております。 イメージは以下の通りです。 D:\a.txt,D:\b.txt,D:\c.txt バッチを1時から動かして、上記3つが揃えば、そこからコマンドを実行しバッチは終了 もしなければ10分置きにファイルをチェックし、4時を過ぎればバッチを終了(コマンドを実行させない)ということをしたいです。 コマンドは何でも良いので例えば「echo HELLO」とでもしておきます。 よろしくお願いいたします。

  • バッチファイルについて

    あるバッチファイルがあります。 そのバッチファイル内では、AとBというバッチが 呼び出されているとします。 このときのAおよびBの処理開始・終了時刻を ログとしてとりたいのですが、どのように記述 すればよいのでしょうか?教えてください。 あいまいな質問で申し訳ないですが よろしくお願いします。

  • WindowsのRANDOM関数を用いたバッチファイル

    お世話になります。 以下のようなバッチファイルを作成しました。 ----------------------- @echo off SET RND=%RANDOM% echo %RANDOM% pause ----------------------- 期待する動きとしては、バッチの実行時に毎回0~32767の 乱数のいずれかが表示されてほしいのですが、9012,9020,9023,9026のように微増していく数字が表示され、とても乱数とはいえない状態です。 ちょっとした思い違いなのかもしれませんが、行き詰まってしまっています。DONコマンド,バッチに詳しい方、ご教授ください。

  • バッチファイルについて

    バッチファイルで echo "あああ" のように文字を表示するechoコマンドがありますが、 echo "あああ" echo "いいい" とコマンドを打つと あああ いいい ↑という感じで同じページ(?)に表示されます。 あああと表示されたあとにページが切り替わって いいいと表示したのですが どのようなコマンドを打ち込めばいいのでしょうか? 説明が非常に下手ですみません。