• ベストアンサー

過去時刻を表示させるバッチファイルの作成方法

業務で現在の時間より1時間前を表示させるバッチを作成したいのです。 T_TIME=`date "+%Y%m%d"` echo $T_TIME で作成してみましたがどうしても上手くいきません。 どのように作成したらよいのでしょうか??

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

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.1

Windows上で動作するバッチを作成する。と言う意図で良いでしょうか? Windows上のバッチでは、日付の計算など高度な処理はできません。 適当な言語で、現在の時間より1時間前の時間を作り、 標準出力へ書き出すプログラムを組む事で、 バッチ上で意図した動作をする様になると思います。 標準出力へ書き出せるプログラミング言語は利用可能でしょうか? 例えば、Active Perl の様なスクリプト言語を利用して、 現在の時間より1時間前の時間を作り出すスクリプトを作成し、 バッチから起動することで、意図した動作ができるでしょう。 もちろん、他に適当な言語があれば、それを利用しても構いません。 不明点があれば、また質問してください。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.4

%Y%m%d って日付けですけど、1時間前というからには時刻を得たいんですよね? 時は%H、分は%M、秒は%S です。 linux等のdateがgnu-dateなOSなら、 T_TIME=`date "+%H%M%S" -d "1 hour ago"` 他のOSでもし、-d "1 hour ago" が効かなかったら、 T_TIME=`TZ=XXX-8 date "+%H%M%S"` (日本がタイムゾーンGMT+9なんで、GMT+8のタイムゾーンでの時刻を得る)

  • utf7
  • ベストアンサー率29% (11/37)
回答No.3

上記の書き方は、Solaris系のOS・bshでしょうか。 Solarisのdateコマンドでは、時間の算出はオプション1つで簡単にできるものではないので、それなりのスクリプトを書く必要があります。簡単に書くとしたら、$1さんや$2さんが挙げているPerlで書くのがよいと思います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

多分、windowsではないのでしょうね。 やはり、Perlを使うのが簡単だし、OSを選びません。 Perlで書くなら以下のようにします。 ($sec,$min,$hour,$mday,$mon,$year)=localtime(time-60*60);#1 hour ago printf "%d/%02d/%02d %02d:%02d:%02d",1900+$year,$mon+1,$mday,$hour,$min,$sec;

関連する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

  • 連続でpingを実行するバッチファイルがうまくいきません。

    連続でpingを実行するバッチファイルを作成してたんですが、うまくいきません。 実行すると、"プロセスはファイルにアクセスできません。別のプロセスが使用中です。"って表示されます。 日付と時間はテキストに記載されるんですが、pingの結果が記載されません。 バッチファイルの内容は以下の通りです。 @echo off echo -------------->>d:\result.txt echo PINGテスト結果>>d:\result.txt echo -------------->>d:\result.txt echo 実行年月日 >>d:\result.txt date /T>>d:\result.txt echo 実行時間 >>d:\result.txt time /T>>d:\result.txt for /L %%f in (1,1,254) do ping -n 4 -w 50 192.168.100.%%f>>d:\result.txt exit コマンドプロンプトで、 for /L %f in (1,1,254) do ping -n 4 -w 50 192.168.100.%f>>d:\result.txt と実行すると、pingの結果がテキストに記載されました。 よろしくお願いします。

  • file_get_contentsについて

    file_get_contents()で、 <time datetime="<?php echo $mtime = date('Y-m-d\TH:i:s', getlastmod()); ?>"><?php echo $mtime; ?></time> を取得すると、 <time datetime="<?php echo $mtime = date('Y-m-d\TH:i:s', getlastmod()); ?>"><?php echo $mtime; ?></time> (全く同じ文字列)を吐き出しますよね。 そして、それをechoすると、<?php ~ ?>はそのままHTML上に表示されます。 これを、PHPを実行して、 <time datetime="2010-02-19T23:40:10">2010-02-19T23:40:10</time> のように表示させるようにするには、どのようにするのが一般的なのでしょうか。 先人の皆さんの知恵をおかしください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • バッチファイルの時刻

    下記は、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秒後の時刻が終了時刻にならないのですが、なぜでしょうか?

  • バッチファイルの作成方法

    バッチファイルの初心者です。 下記のようなバッチを作成したいと思っています。 (1)本日の日付のディレクトリを作成する。 (2)そのディレクトリに数時間毎に作成される***.logを全て移動する。 (3)3日前に作成したディレクトリを削除する。 以上のような流れのバッチファイルは簡単に作成できるのでしょうか?

  • ImageMagickでのバッチファイル作成の方法

    今現在Windows SP2環境にてImageMagickを使用しております。 そこで、下記のコマンドを記述したバッチファイルを作成したい と思っております。 <コマンド> convert -density 300 +antialias hoge.eps hoge.png そこで以下のようなバッチファイルを作成しました。 ------以下、バッチファイルtest.batの内容------- @echo off convert -density 300 +antialias hoge.eps hoge.png -------------------------------------------------- しかし、実際に「test.bat」と打ってenterを押しても 何も表示されず、ファイルも作成できておりません。 バッチファイルではなく、コマンドプロンプトに convert -density 300 +antialias hoge.eps hoge.png と打つとうまく作成できます。Pathの設定もしっかり 出来ておりますのでバッチファイルの記述の仕方に 問題があるのではないかと考えております。 どのように直せばうまくいくか分かりますでしょうか? どうかご教示の程よろしくお願い致します。

  • windowsXPでのバッチファイル作成について

    windowsXPでのバッチファイル作成について質問させてください。ネットワーク機器の疎通確認をするよう以下を以下を作成しました。 <bat1> for /L %%i in (1,1,254) do ( ping -w 50 -n 1 192.168.1.%%i echo 192.168.1.%%i %errorlevel% ) 結果、正常応答とタイムアウトする機器があるのですが、errorlevelが全て0で返ってきてしまいます。 しかし・・・ <bat2> ping -w 50 -n 1 192.168.1.1 echo 192.168.1.1 %errorlevel% とした場合、タイムアウトした場合errorlevelは期待どおり1となります。これはなぜでしょうか。bat1の記述がおかしいのでしょうか。 また、本来はerrorlevelではなくタイムアウトやルータからのエラーなど、応答によって後の処理やエラー画面を変えたいのですが、どのように作るのが良いでしょうか。素人質問で申し訳ありませんが、よろしくお願い致します。

  • バッチファイル 時間変数 短縮化

    バッチファイル 時間変数 短縮化 お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- set BAT_FILE=TIME.bat set LOG_DIR=D:\test set LOG_FILE=LOG.txt set LOG_FILENAME=%LOG_DIR%\%LOG_FILE% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理A(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理B(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% コード-------------------------------------------------------------------------------- 上記プログラム内の処理A及び、処理Bは比較的長い処理である為、その前後の処理時間帯を上記のように時間変数で取ってログに出力されています。 しかし、上記のように最新の処理時間帯をわざわざ何行もある各時間変数を宣言して取得するのはプログラム的に長くなってしまい、かつ醜いです。 上記方法以外に時間変数のスッキリとした取得方法は無いのでしょうか? ご存知の方がいれば、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • バッチファイルでのif文分岐

    ドラッグ・アンド・ドロップ(以下、D&D)によるバッチファイルを作成する際にダブルクリックでバッチファイルを開こうとする行為のフェールセーフを考えています。 現状では、以下のバッチファイルにファイルやフォルダをD&Dするとif文の分岐の箇所で終了してしまいます。 有識の方の教授をお願いします。 /* ↓↓ 以下コードです ↓↓*/ @echo off if "%1"=="" goto error rem D&Dされたパスを表示 echo %1 echo 終了しました。 goto end :error echo このファイルはダブルクリック形式ではありません。 echo ファイルやフォルダをD^&Dして下さい。 pause exit :end exit /* ↑↑ ここまで ↑↑ */ 開発環境 OS:WindowsXP 以上、よろしくお願いします。

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

    お世話になります。 現在バッチファイルを作成中なのですが、作成したバッチファイルを実行すると 「"("の使い方が間違っています」というエラーでこけてしまいます。 原因箇所は、下記コマンドの★部のIF文であることはほぼ間違いないのですが、 Webサイトで紹介されている原因である、「"("の直前やIF文内にコメントがあると発生する」という 条件には当てはまらないためエラーになる原因がわからず、投稿させていただきました。 ============================================= REM メイン処理 if %FLAG% == 1 ( echo %MSG1%から%MSG2%へPingを送信 ping -n 2 %PING_HOST% ) else ( echo 該当する設定がありません ) pause REM pingが通らなかった場合にイベントログにエラーを出力する if %Errorlebel% == "1" (   ★ echo 疎通不可 eventcreate /L Application /T ERROR /id 999 /d "%MSG1%から%MSG2%へ疎通不可。" ) else (                   ★ echo 疎通 eventcreate /L Application /T INFORMATION /id 111 /d "%MSG1%から%MSG2%へ疎通確認。" ) pause ============================================= よろしくお願いいたします。

専門家に質問してみよう