📂
Windows で readlink -f のようなもの
相対パスから絶対パスを取得する
相対パスから絶対パスを得たいことはしばしばあります。 Linux であれば readlink -f foo
でこの仕事を完了できます。 しかし MS-Windows にはそのようなコマンドがありません[1]。 ないなら作りましょう。 ここにあります。
これはなに
相対パスを絶対パスに変換して標準出力します。
書式
> GetFP [相対パス]
第一引数にい相対パスを指定します。 引数を省略した場合はカレントディレクトリ (.) を選択したものとして扱います。 第二引数以降は無視されます。
戻り値
戻り値 | ステータス |
---|---|
0 | パスは有効です |
1 | 無効なパスです / ファイルは存在しません |
-1 | 絶対パスを正しく出力できなかった恐れがあります |
どうしてこんなものを作ったのか
Windows でも wget(1) のようにコマンドラインから HTML を取得したいと思っていた時期がありました。 どうやら HTMLGET というコマンドがあるようで、それを使えばコマンドラインから HTML を取得できそうでした。 しかし、このコマンドは保存先の絶対パスが必要で、取得の毎に絶対パスを入力するのは大変に煩わしいことでした。 これが所以です。 どうして wget そのものを作らなかったのか……
DOSKEY マクロ
DOSKEY MYWGET=FOR /F "USERBACKQ" %%A IN (`GetFP $2`) DO BITSADMIN /TRANSFER HTMLGET $1 %%A
とマクロを組んで
MYWGET httpから始まるURI 保存先ファイル名
とすると劣化版 wget として利用できます。 ただし、Content-Size が報告されている必要があるようです。
これを作って数週間で Windows Update がきて、Windows でも curl が使えるようになりました。 めでたしめでたし。
おわりに
おわりです。
-
ああ、もしかしたら PowerShell なら何か手段があるかも知れません ↩︎
Discussion