CMDシェルで以下を実行するとします。
set FOO=bar
CMDシェルをリサイクルする以外に、この変数の定義を解除する方法はありますか?
CMDシェルで以下を実行するとします。
set FOO=bar
CMDシェルをリサイクルする以外に、この変数の定義を解除する方法はありますか?
set var=
答えは、Windowscmd.exeの場合とまったく同じようにMS-DOS6.22command.comでも機能します。(ただし、Windowsとは異なり、var =を二重引用符で囲むと機能しません。代わりに、名前が二重引用符で始まる環境変数が作成されます。)
回答:
これは、Windows 7CMDシェルで機能します。
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
コマンドではスペースが重要です。試しset FOO = bar
てから試してみるとset FOO=
、「FOO」の設定が解除されません。ただし、何らかの理由で、内部では(?として)重要ではありません% %
。
以下はコメントとしてのみ申し上げますが、自立することも重要だと思います。
以前の回答の多くは、末尾のスペースに注意する必要があると述べていました。そして確かにそれは本当です。ただし、特にコマンドラインのワンライナーを実行していて、コマンドセパレータとしてスペースが必要な場合は、末尾のスペースが何があってもそこに入りたいことがあることがわかりました。
これがその問題の解決策です。
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
このように宣言を二重引用符で囲むことにより、間隔の問題を完全に回避できます。これは、パス間のスペースを削除するために連結して変数を作成する場合にも非常に役立ちます。たとえば、次のようになります。
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe
)を意味しますか?