2010年7月8日木曜日

コマンドプロンプト(cmd.exe)で、標準出力されたコマンドの結果を変数に格納

linux シェルのコマンド置換をコマンドプロンプトで使いたいときに。。。

注意点

下記コマンド中の ❚(0x08) はコマンド列に含まれない制御文字などであればよくて ❚(0x08) をメモ帳で入力するなら CTRL+BACKSPACE。
※ 詳しくは [参考文献] の [制御コードの入力方法] 項目に記述した文献参照

Set コマンドで COMMAND 変数の内容を設定するときに、エスケープ(^)が必要な文字は 2重にエスケープする。
例えば & を echo させたい場合は ^^^& とする。

コマンド プロンプト
C:\>type stdin2var(1).cmd
@Echo off
Setlocal ENABLEDELAYEDEXPANSION
Set COMMAND=echo ;a b  cd;^^^&echo.""^^^>con:
For /F "usebackq tokens=* eol=❚" %%i IN (`!COMMAND!`) Do Set VAR=%%i
Echo !VAR!
Endlocal

C:\>stdin2var(1).cmd
;a b  cd;&echo."">con:

C:\>

コマンド文字列にダブルクォート(")を含まない場合は下記でもよいらしい。

コマンド プロンプト
C:\>type stdin2var(2).cmd
@Echo OFF
For /F "usebackq tokens=* eol=❚" %%i In (`"echo ;a^^^&echo."`) Do Set VAR=%%i
Echo %VAR%

C:\>stdin2var(2).cmd
;a&echo.

C:\>

確認

  • Windows XP SP3

参考文献

遅延評価を使った For /F 文の問題回避方法

  • Windows Script Programming -「FORコマンドのバグ?」
    http://scripting.cocolog-nifty.com/blog/2007/02/for_daa8.html

制御コードの入力方法

  • Windows Script Programming -「FOR /F の eol について」
    http://scripting.cocolog-nifty.com/blog/2008/02/for_f_eol_2f50.html

2010年6月24日木曜日

JRE を最新にしても Firefox のプラグインリストに古い Java Deployment Toolkit が表示される

対処

プラグインリストに表示された古い Java Deployment Toolkit は無効状態になっていて、 「詳細については次のページを見よ」とのことで確認。

Java Deployment Toolkit についてはさらに「see bug 558584」とのことで確認。

npdeploytk.dll が古いプラグインのファイルとのことなので、検索してみるとひとつ発見。

Command Prompt
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>cd /d C:\

C:\>dir /s /b /a  npdeploytk.dll
C:\Program Files\Java\jre6\bin\new_plugin\npdeploytk.dll

削除。

Command Prompt
C:\>del "C:\Program Files\Java\jre6\bin\new_plugin\npdeploytk.dll"

C:\>

Firefox を再起動してアドオンのプラグインリストを確認すると表示されなくなっている。

確認環境

  • Microsoft Windows XP Professional Version 2002 Service Pack 3
  • Mozilla Firefox 3.6.4
  • Java Deployment Toolkit 6.0.200.2

2010年6月17日木曜日

yum 以外でインストールしたパッケージが yum update によって上書きされる(2)

前回 base レポジトリから OpenOffice.org-* を除外して、しばらく更新対象から外れていたけれど

今度は updates リポジトリへ更新

$ yum check-update Loaded plugins: fastestmirror, priorities Excluding Packages from CentOS-5 - Base Finished 0 packages excluded due to repository priority protections openoffice.org-ure.i386 1:3.1.1-19.5.el5_5.1 updates

update にも除外を追加

/etc/yum.repos.d/CentOS-Base.repo
[updates] exclude=openoffice.org-*

2010年6月11日金曜日

ファイルを右クリックしてからメニューが表示されるまでに時間がかかる

ファイルの種類にかかわらず、ファイルの右クリックで表示されるメニューの中に必ず含まれる項目がある。
次のレジストリに登録されているようなので、必要のない登録を探してみる。

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers]

暗号化と圧縮は sendto でまかなえるし、
復号と解凍は、拡張子を関連付ければよいので、
暗号/復号と圧縮/解凍プログラムはメニューに必要なさそう。

この 2つのプログラムの登録をバックアップ用にエクスポートして、削除。

右クリックで確認すると、無事メニューから取り除かれている。
右クリックからメニュー表示までの時間が少し改善されたように感じるけれど
気のせいかもしれない。

2010年5月20日木曜日

yum 以外でインストールしたパッケージが yum update によって上書きされる

現象

yum update したら OpenOffice.org ver3.2 が ver3.1.1 にダウングレードされて しかも .xls ファイルをダブルクリックで読み込んで表示してくれない。

ひとまず ver3.1.1 のパッケージを削除して、そのあと ver3.2 を再インストール。

対処

また上書きされないように OpenOffice.org を yum レポジトリから除外する。

/etc/yum.repos.d/CentOS-Base.repo
[base] : exclude=openoffice.org-*

注意

yum レポジトリの管理下にあるパッケージを削除して、最新版をソフトウェアの公式ページなどから ダウンロードして、インストールする場合は注意する。

2010年4月26日月曜日

vm 上 CentOS で起動後ネットワークが有効にならないことがある

対処済み?

IPv6 を無効にしてから現象が起こっていないので IPv6 の取得に失敗すると IPv4 も道連れにされることがあるのかもしれない。

/sbin/dhclient あたりを覗けば原因がわかりそうだけれど、うまくいっているので追求しないことにする。

Date: 2010/03/01 09:31 AM

とりあえずの対処。次の順番で実行すると直りやすい。

# /sbin/dhclient -r : : # /sbin/ifdown eth0 # /sbin/ifup eth0 Determining IP information for eth0...done.

確認

# /sbin/ifconfig : : # /bin/ping (default-gateway)

2010年4月23日金曜日

Outlook 2007 で HTML メールが崩れて表示される

原因

Outlook 2007 では HTML タグや属性と CSS が制限されている。詳細は下記リンク先を参照。

流し読みした制限内容のいくつかあげると、下記は当然として

  • script と各種イベント(onxxx="..." など)
  • frame と iframe 関連
  • form 関連
  • java や flush など(applet, object...)

下記の制限も注意

  • background の color 以外
  • レイアウトを変形する CSS(position, display, float, clear...)
  • 表示内容を制限する CSS(overflow, visibility...)

確認

未確認