code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

コマンドプロンプトで変数の存在確認

10年以上DOS触っていたのに最近知りました(恥。

XPあたりかららしいですが

if not defined _PATH (
	set "_PATH=%PATH%"
)

最初は昔ながらのif "%_PATH%"==""としていたのだが、括弧()が変数_PATHに含まれているとif文のブロックと判定されてしまい、例えば

\QuickTime\QTSystem\ の使い方が誤っています。

と出ていて困っていた。またif文のブロックの中で参照している%PATH%も最初はset _PATH=%PATH%と書いていたが、同様に使い方が間違っているとエラーになっていた。

if文の方はnot definedを使えば値が展開されなくなり解決。

if文のブロック内についてはset "_PATH=%PATH%"とすることで回避できた(set _PATH="%PATH%"とするとやはり使い方が間違っているとエラーになる)。遅延環境変数の展開(SETLOCAL ENABLEDELAYEDEXPANSIONして%PATH%!PATH!)とするでも可。

If - Microsoft TechNetより。コマンド拡張機能(command extensions;)が有効である必要があり(Windows 7の場合既定では有効)。

無効にしている場合は『SETLOCAL ENABLEEXTENSIONS

コマンド拡張機能が有効かどうかは

if not "%CMDEXTVERSION%"=="" echo 有効
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。