dポイントプレゼントキャンペーン実施中!

業務で現在の時間より1時間前を表示させるバッチを作成したいのです。
T_TIME=`date "+%Y%m%d"`
echo $T_TIME

で作成してみましたがどうしても上手くいきません。
どのように作成したらよいのでしょうか??

A 回答 (4件)

Windows上で動作するバッチを作成する。

と言う意図で良いでしょうか?

Windows上のバッチでは、日付の計算など高度な処理はできません。
適当な言語で、現在の時間より1時間前の時間を作り、
標準出力へ書き出すプログラムを組む事で、
バッチ上で意図した動作をする様になると思います。

標準出力へ書き出せるプログラミング言語は利用可能でしょうか?
例えば、Active Perl の様なスクリプト言語を利用して、
現在の時間より1時間前の時間を作り出すスクリプトを作成し、
バッチから起動することで、意図した動作ができるでしょう。

もちろん、他に適当な言語があれば、それを利用しても構いません。


不明点があれば、また質問してください。
    • good
    • 0

%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のタイムゾーンでの時刻を得る)
    • good
    • 0

上記の書き方は、Solaris系のOS・bshでしょうか。


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

多分、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;
    • good
    • 0

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