- 締切済み
バッチでファイル名称を時刻にしたいのですが
Windows2000で日付と時刻のファイルネームで 保存したいのですが下記のコードでやってみたら 10:00以降ならOKだと思うんですが00:00から09:59が エラーになりそうです。 09とかが 9だけになりNGになる気がします (今、手元のPCがmeで想像の範囲ですが) 時刻の部分が二桁になるようにするにはどうすれば 良いでしょうか、お教え願います。 set DT=%date:~2,4%%date:~7,2%%date:~10,2% set TM=%time::=% set fname=%DT%_%TM%.txt 10時以降は、20040630_100000.txtみたいになるん でしょうが・・・ 9時以前は、20040630_ 90000.txtはきっとNGのような 宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- deadline
- ベストアンサー率63% (1239/1943)
確かに、時刻が一桁だと、『_』の後ろにスペースが入ってしまい、『20040630_』と『90000.txt』の2つのパラメーターとして解釈されてしまいますから、コマンドによってはエラーが出ます。 スペースが入っているファイル名を一つのパラメータとして解釈させたければ、ダブルクォーティション(")で囲ってしまえば良いだけですから、 set fname="%DT%_%TM%.txt" と、『fname』に最初からダブルクォーティションを含めて設定するか、 set fname=%DT%_%TM%.txt コマンド名 "%fname%" とコマンドラインで『fname』を参照するときにダブルクォーティションで囲うか、です。 Windows 2000の『コマンドプロンプト』で試したところでは、上記のどちらでも正しく一つのファイル名として解釈されました。 なお、Windows 2000の『コマンドプロンプト』上での%time%は、『09:00:00.00』とミリ秒まで返すので、 set TM=%time::=% だと、『90000.00』になってしまいます。面倒くさいけど、 set TM=%time:~0,2%%time:~3,2%%time:~6,2% かな?
お礼
deadline様 有難う御座います。 fnameにダブルクォーティションで囲うという案、目のうろこが取れた気がしました。 何のために悩んだんだろう・・・・ とりあえず、空白をSETで0に差し替える方法でやってみることにしました。 XPではOKだったので明日Win2Kで確認します。 set DT=%date:~-10% set TM=%time::=% set TM=%TM:~0,6% set TM=%TM: =0% set fname=%DT:~0,4%%DT:~5,2%%DT:~8,2%_%TM%_LOG%