|
353) 前日の日付を取得する方法 ぷーさん 2003/07/01(火) 11:37 |
|
windows2000コマンドで、 前日の日付を取得するにはどうしたらよいでしょうか? 過去ログにそういうのがあったのですが、 いまいちよくわかりません。。。 どなたかご教授お願いします。 |
|
354) Re:前日の日付を取得する方法 YanaKen 2003/07/01(火) 14:18 |
|
ぷーさん(さん) 再びどうも。 > windows2000コマンドで、 >前日の日付を取得するにはどうしたらよいでしょうか? >過去ログにそういうのがあったのですが、 あったかもしれませんね。 >いまいちよくわかりません。。。 ・発言番号何番のツリーについての話でしょうか? ・具体的には、そのツリーのどの発言のどの個所が「わからない」のでしょう? ……など、回答者(になってくれるかもしれない人)に、ぷーさんの側から提供可能な情報がいろいろあるはずですよね。 あるいは、具体的な質問項目をまたあらためて箇条書きにしてみる、というのでもいいかもしれません。 ここで質問に回答することで生計立ててる人がいるわけじゃないので、「答える側がなるべく余分な手間を強いられないですむ質問のしかた」ということにも、できるだけご留意をお願いします。 SYSOP YanaKen [個人homepage] [@pay導入について] [YanaKenの@pay窓口] |
|
365) Re2:前日の日付を取得する方法 ぷーさん 2003/07/03(木) 00:43 |
|
>・発言番号何番のツリーについての話でしょうか? >・具体的には、そのツリーのどの発言のどの個所が「わからない」のでしょう? 発言番号151番で「英サイトを参考にしたらわかった」とあります。 そのサイトのアドレスもあって、実際にのぞいてみたのですが、 もちろんすべて英語で書いてあるので いまいち、というより全くわかりませんでした。 こちらがその英サイトです。 http://www.experts-exchange.com/Operating_Systems/MSDOS/Q_20441740.html |
|
369) Re:Re2:前日の日付を取得する方法 YanaKen 2003/07/03(木) 12:27 |
|
ぷーさん どうも。 >発言番号151番で「英サイトを参考にしたらわかった」とあります。 ↓このコメントツリーですね。 ◆149. 前日の日付の取得方法 2003/02/12 >もちろんすべて英語で書いてあるので >いまいち、というより全くわかりませんでした。 > >こちらがその英サイトです。 >http://www.experts-exchange.com/Operating_Systems/MSDOS/Q_20441740.html 全部翻訳してさしあげるわけにもいかないですが、上記ページ(BBSか何かのログ)では、冒頭にぷーさんと同趣旨の質問が寄せられ、後にコメントとして2人のひと(pbarrette氏とSteveGTR氏)からサンプルバッチファイルが寄せられてます。 どちらも、いちばん行数が費やされているのは下記のような細かい条件分岐処理で、Windows2000系の拡張されたコマンド体系をめいっぱい活用して書かれています。 ・年号、月、日付をそれぞれ環境変数にいったん取り込む。 ・日付から1を引く。 ・日付が1以上なら処理はここで完了。 ・日付が0の場合、「前月の最終日」を算出する。 ・「月」が「1」なら年号から1を引き、月は12、日付は31 ・「月」が「3」なら月は2。日付はうるう年なら29、それ以外なら28。 ・「月」が「5」なら月は4、日付は「30」。 ……以下略。 プログラミング上級者であろう人たちが、「命題」を与えられて興味をもち、「よし、気分転換にちょこっと作ってみようか」みたいな雰囲気ですね。 内容を理解するにはコマンドの基本的使い方がわかっているだけでは歯が立たない「プログラミング」という感じです。(逆に、CなりBASICなり javascriptなり、プログラミングの知識のあるヒトならば、バッチファイルの文法自体はわからなくても大略の見当がつく内容だと思います)。 で、本題に戻って「どうしても前日の日付を得たい」という場合、このサンプルをコピー&ペーストし、なんとか自力で処理の流れを把握した上で流用する か、または、コメントツリー末尾に じゃく さんが紹介されている手段(前日のうちに日付を別ファイルに保存しておく)しか、今のところこの掲示板では「見つかってない」ことになります。 ●前日の日付の手抜き型取得方法● ちなみに、ぼく自身がもしそういう必要に迫られたらどうするか……といえば、個人の環境でそんなに凝る必要もないんで、「単純に日付から1ひいただけで済ますだろうな」と思います。 ↓例 set /a yesterday=%date:~2,4%%date:~7,2%%date:~-2% - 1 (/aは、SETコマンド内での演算処理を指定するスイッチです) この場合、たとえば 20030100 →実は2002年12月31日のこと 20030300 →実は2003年02月28日のこと ……など、「日付ゼロ」の部分を「前月の末日の意味」と読み替える必要がありますが、ファイルの50音順での並べ替え時にはこれでちゃんと日付順に並ぶし、うるう年の計算も関係ないし、なにより1行で済んでしまいます(^^;。 YanaKen [個人homepage] [@pay導入について] [YanaKenの@pay窓口] |
|
374) Re2:Re2:前日の日付を取得する方法 じゃく 2003/07/05(土) 11:51 |
|
http://homepage1.nifty.com/jak/batch/date.html |
|
ぷーさん、Yanakenさんこんにちは。 >「よし、気分転換にちょこっと作ってみようか」みたいな雰囲気ですね。 で、作ってみました。 割といい出来だったのでページを作って公開します。 月をまたぐ処理もなるべくスマートに処理するようにしました。 また2月末の閏年にも対応しています。 一度試しに実行してみてください。疑問点、動作不良が有れば こちらの掲示板に書き込んでいただくとありがたいです。では。 http://homepage1.nifty.com/jak/batch/date.html |
|
375) Re3:Re2:前日の日付を取得する方法 YanaKen 2003/07/05(土) 18:37 |
|
じゃく さん、いつもどうもです~。 さっそく拝見しました。月の大小計算のコンパクトさにまず敬服(^^)。 ただ、実は「ああ、パラメータなしだと%date%を参照するのか」って思って、とりあえずそのまま実行してしまったもんで(うちの%date%の中身 は"土 2003/07/05"のような形式)、最初は変な結果が返ってきちゃいました(^^;。曜日を抜かして"2003/07/05"のような形式で与える必要があるんですネ。 バッチファイルサンプル"専門"サイトがオープンしちゃってるのにも感動です。掲示板へのリンクもどうもです。コマンド・リファレンスのページとかからリンク張らせていただいていいですよね? SYSOP YanaKen |
|
377) Re4:前日の日付を取得する方法 じゃく 2003/07/07(月) 06:41 |
|
YanaKen さんこんにちは。 > ただ、実は「ああ、パラメータなしだと%date%を参照するのか」って思って、とりあえずそのまま実行してしまったもんで(うちの%date%の中 身は"土 2003/07/05"のような形式)、最初は変な結果が返ってきちゃいました(^^;。曜日を抜かして"2003/07/05"のような形式で与える必 要があるんですネ。 そうですか。%date% の結果って地域の設定に依存するのかな? 定番のdate /t を使う方がいいのですかね。 >のにも感動です。掲示板へのリンクもどうもです。コマンド・リファレンスのページとかからリンク張らせていただいていいですよね? ありがとうございます。内容も徐々に追加していこうと思います。 |
|
378) Re5:前日の日付を取得する方法 YanaKen 2003/07/07(月) 13:12 |
|
じゃくさん こんにちは。 >そうですか。%date% の結果って地域の設定に依存するのかな? じゃくさんの環境ではYYYY/MM/DDなのですネ。うーむ。何に影響されるのかはわかんないですが、とにかく念のため再起動後も試してみましたが、表示形式は同じでした。 |E:\>echo %date% |月 2003/07/07 こういうのは個人の環境では絶対気づきようがないですね(^^;。 >定番のdate /t を使う方がいいのですかね。 そうかもしれませんね。念のためウチのWin2000Proでの実行結果↓ |E:\>date /t |2003/07/07 月 setのヘルプには、 %DATE% - DATE コマンドと同じフォーマットで現在の日付に展開します。 と書いてあるけど、厳密に考えると、実態とちょっと矛盾してることになりますね。曜日は別なのかな……。 >ありがとうございます。内容も徐々に追加していこうと思います。 はい、こちらこそ今後ともどうぞよろしく。 YanaKen |