DOS(バッチファイル)で、ファイルの内容やコマンドの実行結果(標準出力の内容)を環境変数に入れる例を書いてみた。
(コマンドの実行結果の取得は、UNIXなら$( )を使って簡単に出来るんだけどなぁ)
ついでに、現在日付を取得して加工する例も書いてみた。
(UNIXなら、dateコマンドに書式が指定できるんだけどなぁ)
DOS(バッチファイル)で、ファイルの内容やコマンドの実行結果(標準出力の内容)を環境変数に入れる例を書いてみた。
(コマンドの実行結果の取得は、UNIXなら$( )を使って簡単に出来るんだけどなぁ)
ついでに、現在日付を取得して加工する例も書いてみた。
(UNIXなら、dateコマンドに書式が指定できるんだけどなぁ)
少々ネタが溜まったので、久しぶりにMS-DOS(コマンドプロンプト)のコマンド一覧のページを更新。
Cygwinで欲しいコマンドがどのパッケージにあるのか、慣れてないのでさっぱり分からない。インターネットで先達に頼る日々です^^; いつもお世話になっております。
loggerの場合、昔はinetutilsにあったけど今はutil-linuxにあるんだそうだ。
でも。インストールされているコマンドのバージョンとか分からないかなーと思ってcygcheckのヘルプを見ていたら、色々なオプションがあるのを発見!
cygcheck -pで、まさにコマンドからパッケージを探すことが出来るんじゃん!
(インストール後にシンボリックリンクで作られるコマンドに対しては探せないようだけど…)
これで試しに「cygcheck -p /bin/logger」を調べてみると、inetutils-1.3.2-37とutil-linux/util-linux-2.13.1-1・2にある。
「cygcheck -p inetutils」とやってみると、最新版はinetutils-1.5-4らしい。なるほど。
やはり自分にとって新しい技術を知るには、いろいろ遊んでみるのが大事だなぁ。
遊ぶ = 目的を定めずに色々試してみる
Cygwinをお試し。
UNIXコマンドが使えるようになるコンソール型ツールなのかと思っていたら、実際はUNIXコマンドの名前をしたWindowsプログラム群だったのか。
Cygwin(実体はbash、を実現するexeファイル)上でgccを使ってコンパイルするとWindows用のexeファイルが作れるみたいだし。
一番試したかったのはシェルがJava(ProcessBuilder)から実行できるかどうかだったんだけど、bashが独立したexeファイルだったもんだから、その引数にシェルを渡すことであっさり実行できた。
便利なもんですなぁ(笑)
例のfor %~sはバグだと思うし誰かが既にマイクロソフトに知らせていると思うんだけど、「for」はすごく一般的な単語だし「%~s」といった記号は検索に使えないし、という訳で、既知のバグなのかどうか確認できず…。
いっちょマイクロソフトに聞いてみようかと思ったけど、Windowsの窓口はバグの話を受け付けてくれないし、他にメールで質問する入口って見当たらないなー。さすがマイクロソフト。そりゃクレームは聞きたくないよなw
まぁいいや、自分が必死になって解決しないといけないバグでもないし。メモだけしておこう。