
バッチファイルやコマンドプロンプトの存在を今日知ったばかりで、
いま一夜漬けで勉強していますが同時に質問もさせてください。
とあるソフトによるファイルの保存先が
[C:\Program Files\soft\folder\name.jpg] [参照ボタン]
のようになっていて、データの保存自体はモニタをつけずにキーボードだけでできるのですが、
上のように名前が固定なので新規ファイルの保存のたびに上書きされてしまいます。
(保存のたびにリネームする必要がある)
そこで現在の日付と時刻を動的に取得してファイル名にする仕組みを、
上のパスに盛り込めないかとweb上をあさっています
過去の質問を見たところ勉強不足でよく理解できず、また用途も微妙に違う気がしました
御助力をお願いいたします。
No.1ベストアンサー
- 回答日時:
日付と時刻を取り出すには環境変数から簡単に引くことが出来ます。
例えば日付は %date% 時刻は %TIME% ですね。
コマンドラインで
>echo "%DATE%" "%TIME%"
と打ってみてください、"2011/10/07" "10:03:49.53" のように返してきます。
これを利用すればお望みのことはできるのですが実はそんなに簡単ではありません。
というのは、この日付と時刻で返してきたデータには「/」や「:」といった、
ファイル名としては利用できない文字が含まれています。
ファイル名を生成する場合にはこれらの文字を取り除き、数字の部分だけを使わなければなりません。
dateやtime変数から、数字の部分だけを取り出すには、単に「%date%」「%time%」とするのではだめで、
変数値の部分文字列抽出用の修飾を行う必要があるのです。
日付で考えると
「2011/10/07」のような文字列の入ったdate変数から数字の部分だけを抜き出すには、
年: 最後尾より10文字目から、4文字分
月: 最後尾より5文字目から、2文字分
日: 最後尾より2文字目から、2文字分
を取り出せばよい事が分かりますね。
具体的には以下のような記述を使います。
%date:~-10,4%%date:~-5,2%%date:~-2,2%
試しにコマンドラインで確認すると・・・
>echo %date:~-10,4%%date:~-5,2%%date:~-2,2%
20111007
となります。
時刻にしても然りです。
しかしここにも落とし穴があります。
午前0時から午前10時(00:00:59~9:59:59)の場合、time変数が返す文字列の先頭には、「0」ではなく、空白文字が含まれます。
(00、01、02……、09、10、11、……ではなく、0、1、2、……、9、10、11、……となるのです)。
つまり時(0~23)の数値はゼロサプレスされて表示されていので時間を取り出すために
なので単純に「%time:~0,2%%time:~3,2%%time:~6,2%」とすると、先頭に空白文字が入っている可能性が生じます。
これをそのままファイル名やバッチファイルのパラメータとして利用すると、空白文字によって引数の区切りとして扱われるなどの不具合が生じる可能性が生じます。
なので、time変数に含まれる空白文字を、最初に数字の0に置き換えておくようにします。
変数の置換は「%V:s1=s2%」と記述します。ここでs1には空白1文字を、s2には「0」を指定します。
具体的には、一時変数に入れて置換します。
>set time2=%time: =0
これで先頭に空白があれば0に置き換えられます。
ここで「%time%」の内容をいったん変数time2に入れてから次の行で2桁ずつ取り出しているのは、文字列の置換と部分抽出を同時に行えないからです。
その後に
>echo %time:~0,2%%time:~3,2%%time:~6,2%
とすれば午前午後に関係なく同じ桁数の時刻が返されます。
これらを利用してバッチファイルを記述してください。
もし、date変数を3回参照している間に日付が変わってしまっても問題がないようにするためには別のテクニックが必要です。
以上ご参考に。
うわ、こんなに丁寧に詳細に! ありがとうございます(泣)
しかもちゃんとファイル名に使えて、かつ不具合が出ないような処理まで……
恐縮ですm(_ _)m
しかし私の基本部分の理解不足のせいで、foitec様の回答をどのように
保存先のパスに流用するのか(実際にどう入力するのかや、バッチファイルの効果を取り出すための操作等)がいまだ分からず、実践はもう少し先になりそうです。
せっかくの素晴らしい回答をすみやかに活かせず申し訳ありません。
分からないことというのは本当に難しいですね……
この度はありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- その他(Microsoft Office) Excel、Wordのファイル 3 2023/05/07 04:58
- C言語・C++・C# Visual studio2022についての質問です。 現在プログラムを作っているのですが、添付した 1 2023/01/16 19:37
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- その他(ソフトウェア) コマンドプロンプトについて教えてください。 状況: 画像編集ソフト上でネットから保存した画像を使うの 3 2022/05/26 11:14
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Word(ワード) officeの自動保存について教えてください 2 2023/06/18 09:11
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- その他(パソコン・周辺機器) 同じファイル名 上書きしないフリーソフトなどあったら教えて下さい。 仕事で大量の写真などを扱っており 3 2023/05/18 06:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(1)の問題で出した答えと解答...
-
文字化け?字が小さい・・・
-
yの上に点々のある文字を入力す...
-
ファイル名に使用できない文字...
-
3分でする自己紹介は、Wordだと...
-
エクセルの数式バーに表示され...
-
文字化け??
-
文字が大きくなって困っていま...
-
文字の大きさが小さくならない...
-
たけかんむりに平均の“均”とい...
-
旧字体を入力したい
-
チャットをしてると・・・(初...
-
酸素O2の、2を小さく入力す...
-
(◕ฺ‿◕ฺ✿ฺ) かわいい顔文字
-
文字の大きさ。
-
コピペが出来ないHP上の文字...
-
エクセルVBAコードの文字の拡大
-
判読できない文字「□」の正式名...
-
文字を大きくしたい
-
ワード2007ですが透かし文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ファイル名】¥/*:”<> ...
-
電子内容証明で文字装飾のない...
-
平方センチメートルの cm2の打ち方
-
酸素O2の、2を小さく入力す...
-
インスタのストーリーでこうい...
-
辞書登録にて、100文字以上...
-
月の省略表示について
-
yの上に点々のある文字を入力す...
-
2桁数字を1文字入力したい。
-
〇、○、◯という文字について
-
エクセルで無限大マークを表示...
-
エクセルの数式バーに表示され...
-
〄特殊文字の出し方を教えて下...
-
Word で英語を打つ時に変な幅?...
-
名簿作り
-
1000文字以上と指定されたレポ...
-
ファイル名に使う文字の優先順位
-
一つのセルに表示できる最大文...
-
とても長い部署名、肩書きの宛...
-
ディスクユーティリティのS.M.A...
おすすめ情報