環境変数が定義されているかどうかを判断するには、cmd.exe コマンド ライン (cmd.exe は gyp ビルド ツールから呼び出されます) を使用する必要があります。これどうやってするの?変数値に一重引用符または二重引用符が含まれていないと仮定しても問題ありませんが、コマンド拡張機能が有効になっていると仮定することはできません。
私は次のことを試しました.batファイルではうまく機能しますが、コマンドラインに直接入力すると失敗します:
IF "%UNDEFINED%" == "" (echo yes)
その正確な行が .bat ファイルにあり、実行されるとyes
、出力として表示されます。コマンドラインに入力すると、出力は空です。私は Windows XP SP3 でこれをテストしていますが、私の同僚は Windows 7 でも同じ結果を見ています。 battech_defined.php . IF DEFINED UNDEFINED (echo yes)
コマンド拡張機能が無効になっていると機能しないため、使用したくありません。
次の投稿で最も投票された回答は、この問題が「CmdLineParser」と「BatchLineParser」でパーセント展開の処理方法が異なることに関連していると私に信じさせましたが、それでも解決策には至りませんでした : Windows コマンド インタープリター (CMD.EXE) はスクリプトを解析しますか?