- ベストアンサー
過去時刻を表示させるバッチファイルの作成方法
業務で現在の時間より1時間前を表示させるバッチを作成したいのです。 T_TIME=`date "+%Y%m%d"` echo $T_TIME で作成してみましたがどうしても上手くいきません。 どのように作成したらよいのでしょうか??
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Windows上で動作するバッチを作成する。と言う意図で良いでしょうか? Windows上のバッチでは、日付の計算など高度な処理はできません。 適当な言語で、現在の時間より1時間前の時間を作り、 標準出力へ書き出すプログラムを組む事で、 バッチ上で意図した動作をする様になると思います。 標準出力へ書き出せるプログラミング言語は利用可能でしょうか? 例えば、Active Perl の様なスクリプト言語を利用して、 現在の時間より1時間前の時間を作り出すスクリプトを作成し、 バッチから起動することで、意図した動作ができるでしょう。 もちろん、他に適当な言語があれば、それを利用しても構いません。 不明点があれば、また質問してください。
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
%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)
上記の書き方は、Solaris系のOS・bshでしょうか。 Solarisのdateコマンドでは、時間の算出はオプション1つで簡単にできるものではないので、それなりのスクリプトを書く必要があります。簡単に書くとしたら、$1さんや$2さんが挙げているPerlで書くのがよいと思います。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
多分、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;