• ベストアンサー

ファイル名に日付・時刻を付与したい

Cプログラミングの経験はあるのですがperlのソースを初めて 改造することになりました。 変数「$i」にはシェルのファイル名が入ります。 #FS000.csh このファイル名に日付・時刻を付与して、 FS000mm(月)dd(日)hh(時)mm(分)ss(秒).csh というファイル名にしたいのですが、どうしたらいいのでしょうか?? C言語だったら、配列を宣言して、その配列にファイル名を格納、という 書き方をしようかと思うのですが、 perlでの書き方がさっぱりわかりません・・・。 変数(C言語では配列)を定義したりしなくてもいいのでしょうか? わかりにくい質問ですみませんがどうか宜しくお願いします!

  • meal
  • お礼率65% (28/43)
  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

Cとの違い ○ 変数(配列も)宣言はいらない ○ 文字列型がある ○ 厳密な型チェックが全然ない ○ 数値←→文字列の変換も勝手にやってくれる ○ 数値演算は必ずdouble ○ .演算子で文字連結 ○ "" 文字列のなかに変数を書くと、変数展開してくれる ○ '' は文字型じゃなくて文字列 ○ '' ではエスケープ文字不可 ○ 関数はサブルーチン(戻り値も可能) ○ サブルーチンの引数は任意の個数 ○ バージョンによっては2次元配列が正常に動作しない ○ 配列名には@をつける(例: @array) ○ 配列の要素には$をつける(例: $array[4]) ○ 便利なハッシュも使おう(例: $hash{'key'}) ○ ハッシュ名は%をつける(例: %hash) ○ {}の最後の文にはセミコロンがいらなかったり ○ 関数に渡す引数に括弧をつけなくても良かったり ○ 引数などを省略した場合、かってに$_という変数が使われたり ○ リストってのが、Cプログラマには直感的にわかりにくいかも Perlを初めてやったときは、暗黙了解、リスト、正規表現の使い方がかなりわかりませんでした。 でもそれさえわかれば、後はポケットリファレンスだけで、どんどん修行していけると思います。

meal
質問者

お礼

お返事が遅れてすみません。 ありがとうございました。 コテコテソースになってしまいましたが なんとかできました。 また宜しくお願いします。

その他の回答 (1)

  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); @a = split('.', $i); $i = sprintf("%s%02d(月)%02d(日)%02d(時)%02d(分)%02d(秒).%s", $a[0], $mon, $mday, $hour, $min, $sec, $a[1]); とします。

meal
質問者

お礼

お返事が遅れてすみません。 どうもありがとうございました!

関連するQ&A

  • ファイル名を今日の日付、時刻で保存する

    マクロについて教えてください エクセル(2003?)でマクロを使って ファイルを保存するボタンをつくろうと思います。 「ファイル名を今の月-日-時-分で保存する」 という内容を書きたいと思います。 保存するところまではできるのですが、 今日の月-日-時-分を自動的にファイル名に入れる ところをどうしたらよいかわかりません。 Filename = Format(Date, "yyyy-mm-dd") と入れれば日付が入るのはわかったのですが、 時刻も入れたいです Filename = Format(Date,"yyyy-mm-dd",Time,"hh-mm-ss") こんな風に書いてみたのですが、うまく機能しませんでした ご存知の方、ご教授ください。

  • 一番古い更新日付をチェックする

    OS:RedHatLinuxES3.0 下記についてご存知お方がいらっしゃいましたら教えてください。 [file.log]と言うファイルがあります。 このファイルは、5MBになると、5MBに達した時の、年月日時分秒を付けたファイル名[file-YYYY_MM_DD-hh_mm_ss.log]になります。 また、このファイルは5世代管理とするので、[file.log]が一つ、残り4つは[file-YYYY_MM_DD-hh_mm_ss.log]となります。 そこで、質問ですが、この5つのファイルの中で一番古い更新日付を持つファイルのみを他のディレクトリにコピーしようと思っています。 つまり、[file-YYYY_MM_DD-hh_mm_ss.log]ファイル名の一番古い日付を持つファイルを選択したいのですが、いい方法がありましたら教えて下さい。

  • 日付や時刻の"01"を" 1"に変換したいです。

    下記のような問題で悩んでいます。何かよいアイディアがありましたら教えて下さい。 【要件】 ・SimpleDateFormatで指定された書式の文字列にした後、年月日時分秒ミリ秒の"01"~"09"を" 1"~" 9"のように前0を半角スペースに一括変換したい(年は書式がyy形式の場合のみ)。 ・SimpleDateFormatへの書式はエラーが起きない限りどんなものでも受け入れる(通常、書くわけがない書式についても)。 例) "yyyy/MM/dd HH:mm:ss:SSS" "'yyyy/MM/dd HH:mm:ss:SSS形式:'yyyy/MM/dd HH:mm:ss:SSS"  ※''の中にあるMMはテキストなので英字のまま。 "yyyy/MMMMMMMMMMMMMMMMMMMM/dd HH:mm:ss:SSS"  ※Mの数は不明 "yyyy/MM/dd MM MM HH:mm:ss:SSS"  ※月の表示指定が複数 引数 :日付(yyyyMMddHHmmssSSS形式), SimpleDateFormatへの書式 戻り値:SimpleDateFormatで変換後に"01"~"09"を" 1"~" 9"にした文字列 自分なりの検討案としては下記になります。 a.引数の書式をそのままSimpleDateFormatに引き渡ずに、一部修正してから呼び出す。 例)"yyyy/MM/dd HH:mm:ss:SSS"→yyyy/_M/_d _H:_m:_s:__S" ※"_"は半角スペースです。 実際はMやdなどが2桁になる場合は変換しません。 かなりごりごり200行ぐらい試しに書いたのですが、対応できないケースが出てきてその都度エンドレス状態です。 ちょっとこのまま実装するわけにいきません。いつバグがでるか・・・。 b.SimpleDateFormatで変換後に年月日時分秒ミリ秒に該当する箇所に"01"~"09"があったら置換する。  引数の書式からMMやddのindexを保持して、SimpleDateFormatで変換後の該当indexに置換。 例) 書式:"yyyy/MM/dd_HH:mm:ss:SSS" 日付:"20090101010101001" "2009/01/01_01:01:01:001"→"2009/_1/_1__1:_1:_1:__1" ※"_"は半角スペースです。 但し前提として、書式とSimpleDateFormatで変換後の文字列が1対1になっている必要があります。 単純な例ですと 書式:"yyyy/MMMM/dd HH:mm:ss:SSS" 書式のddは11~12桁目ですが、SimpleDateFormatで変換後は下記のようにインデックスがずれます。 "2009/1月/01 01:01:01:001" "2009/12月/01 01:01:01:001" もしかしたら下記のような感じで吸収できるのかもしれませんが、ちょっと個人的に出来そうに思えませんでした。 月が1桁 かつ 書式が"M"の場合 月が1桁 かつ 書式が"MM"の場合 月が1桁 かつ 書式が"MMM"の場合 月が1桁 かつ 書式が"MMMM"の場合 月が1桁 かつ 書式が"Mxn"の場合 月が2桁 かつ 書式が"M"の場合 月が2桁 かつ 書式が"MM"の場合 月が2桁 かつ 書式が"MMM"の場合 月が2桁 かつ 書式が"MMMM"の場合 月が2桁 かつ 書式が"Mxn"の場合 ここ1,2週間ほど煮詰まっています。どなたかアドバイス頂けると助かります。 自分的なネックは書式が限りなくフリー形式なところです。

    • ベストアンサー
    • Java
  • 「EXCEL」VBAで日付を変換

    ファイルを保存する際に現在時刻を元にファイル名を作成しそれで保存する、というものを作っています。 ですが、 yyyy/mm/dd hh:mm:ss ↓ yyyymmddhhmmss というような変換がウマくいかずに困っています。 どなたか、ご教授頂きたいです。

  • javaのCalendar型を日付型に変換したい

    Calendar型の変数をフォーマット付き("yyyy/MM/dd hh:ss")に変換したいのですが上手い方法が見つかりませんでした。 初心者でも無いのですが、変換の方法があったらご教示願います。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 日付形式の変換

    はじめまして Perlで日付形式の変換をしたいと思っています。 RFC1123形式(2 Mar 2006 04:28:25 -0800)から yyyy/mm/dd hh:mm:ssの形式に変換したいのです。 色々と調べましたが、適当なヒントがあるところがありません でした。 どうぞ、関連サイトでも構いませんので、ご回答お願いいたします。

    • ベストアンサー
    • Perl
  • log4jが連続して同じログを

    JSFにて、log4jでログファイルにログ出力を行っているのですが、一回のログ出力メソッド呼び出しで、同じログが2~8行出力されてしまいます。 例) yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... yy/MM/dd HH:mm:ss.853, WARN , .... ミリ秒単位で同じなので、一回出力されれば十分なのですが、複数行出力されています。 短時間で、かなりのサイズになってしまうため、困惑しております。 この事象の解決方法をご存じの方、解決方法をご教示願います。

  • MS-DOSでの日付表示

    MS-DOSコマンドで、日付や時刻の%date% %time%ですと、 yyyy/mm/dd hh:mm:ssの表示になります。 バッチファイルを作成して、フォルダ名の頭に日付時刻をつけたいんですが、 yyyymmdd hhmmss の表示形式にする方法が分かりません。 よろしかったら教えて頂けませんでしょうか。

  • ファイル名が日付のファイルの存在を確認する方法

    OK Waveにお世話になっております。 VB6でソフト製作している初心者ですが、ファイル名が日付の場合に、 そのファイルの存在を確認する方法がわかりません。 対象物に設定完了後にログ作成で、ファイル名を日付でTxtファイルを作成して2行書き込むのですが、再度違う対象物に設定完了時は同じファイル名が存在するなら(同じ日付なら)1行だけ書き込みたいのです。 (1日に10回くらい設定する予定ですので、全て一つのファイルにログを残したい。。。) <やりたいこと> 1.設定完了 ↓ 2.ログ作成作業開始 ↓ 3."C:\Log\"がなければフォルダを作成する ↓ 4.同じファイル名がなければ2行書き込んで保存 ↓ 5.同じファイル名があれば1行だけ書き込んで保存 ↓ 6.以後繰り返し。 4~5がどうしても出来ません。 ファイル名が日付で流動的なので、存在の確認の方法がわかりません。 下記に現在の4~5のコードを書きます。 毎回毎回2行書き込んでしまいます・・・。 ----------------------------------------------------------------------------------- Dim fileNo As Integer Dim FileName As String Dim IDNumber As String If Dir("C:\Log\", vbDirectory) = "" Then 'C:\Logフォルダがあるか確認 MkDir ("C:\Log\") 'なければフォルダ作成する End If 'ファイル番号の取得 fileNo = FreeFile 'ファイルを追加モードで開く (ファイル名の生成) Open "C:\Log\" + Format(Date, "yyyy年mm月dd日") + ".txt" For Append As #fileNo 'txtファイルへ書き込む Print #fileNo, "設定日時,対象番号,設定値" Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo 'ファイルを閉じる ----------------------------------------------------------------------------------- ちなみに下記のようにやってみましたがDate.txtの存在を認識してくれません。。。 If Dir(Date.txt) = "" Then Print #fileNo, "設定日時,対象番号,設定値" Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo Else Print #fileNo, Format(Now, "hh:mm:ss") + "," + Format(IDNumber) + "," + Format(check, "000000") Close #fileNo End If あとここだけなんです。 6/13(月)納期なので、どなたかわかる方、助けてください! よろしくお願いいたします!

  • [vbScript]ファイルの日付

    任意のファイルの作成日付を取得するまでは下記の記述でできたのですが、「YYYY/MM/DD hh:mm:ss」で取得します。 --------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.Getfile(ckFile) WScript.Echo src.DateCreated --------------------------- YYYYMMDD形式で取得したい場合は、どうすればよいでしょうか?

専門家に質問してみよう