MS-DOSでコマンドの実行結果を変数に入れる

UNIX/Linuxでは、コマンドの実行結果は簡単に変数に入れることができますが DOSでは、ちょっと工夫が必要です。

といっても、慣れれば呪文みたいなものなのです。 呪文のカギは FOR コマンドです。 下のサンプルでは、「TIME /T」の結果を ローカル変数 NOWTIME に入れています。

C:\>FOR /F "usebackq" %t IN (`TIME /T`) DO SET NOWTIME=%t
C:\>ECHO NOWTIME=%NOWTIME%
NOWTIME=21:57

/F は、IN の結果やリストを1行ずつ処理するオプションです。 1行ごとに DO 以下のコマンドを繰り返すわけですが、 コマンドの実行結果が1行なので、1回だけ値がセットされます。

"usebackq" は、 コマンド文の囲みに、"`"(バッククォーテーション)を 使用するオプションです。 このオプションを付けない場合、下のように シングルクォーテーションで、 コマンドを囲みます。

C:\>FOR /F %t IN ('TIME /T') DO SET NOWTIME=%t

UNIX/Linux のように「コマンドの実行はバッククォーテーションだよね」って 人は、このオプションを付けてください。

バッチファイルに書くときは、下のように書きます。

@ECHO OFF
FOR /F "usebackq" %%t IN (`HOSTNAME`) DO SET HNAME=%%t
ECHO %HNAME%

FOR コマンド内の "%" は "%%" にしなくてはなりません。

HOSTNAME は、 ホスト名を出力するコマンドです。 WindowsXP以上で、インターネットプロトコル(TCP/IP)が インストールされていると使用できます。 (ホスト名が欲しいだけならば、環境変数 %COMPUTERNAME% もあります)

Googleさんを招待する

新しくサイトを作っても どこからもリンクが貼られていなければ Google の収集ロボットも来てくれません。

新しいサイトが Google のインデックスに追加されているかどうかは、 ここで調べることができます。

もし、サイトがインデックスに追加されていなければ ここで追加してみてください。 数日もすると、Googleの収集ロボットが訪ねてくれると思います。

サイトの引越しと、Apacheのリダイレクト

サーバを借りることにしたので サイトの引越しをしました。

Googleにも引越しを伝える必要があるのですが 301のコードでリダイレクトすれば勝手に認識してくれるそうです。

リダイレクトは、こんな感じで書けます。

RewriteEngine on
RewriteRule (.*) http://www.odin.hyork.net/$1 [R=301,L]

元のサーバのApacheには、mod_rewriteを 入れていなかったので、下の方法で対応しました。

Redirect 301 / http://www.odin.hyork.net/

Google サイト内検索

Amazonアソシエイト