Windowsバッチファイルで変数をアンロードする理由


13

Windowsバッチファイルで使用されている変数をアンロードすることは必要ですか、それとも良い習慣ですか?
たとえば、次のコードではset myFolder=、最後に必要ですか?

@echo off
set myFolder="C:\Temp\Batchfiles"
echo %myFolder%

set myFolder=

私はこれをオンラインの多くの場所で見ましたが、バッチファイルが終了すると変数は自動的にアンロードされますか?

回答:


32

SETグローバル環境変数を設定します。スクリプトの実行後も保持されます。

例を見てみましょう。
まず、変数をクリアして、存在しないことを確認します。

C:\Users\Oliver\Desktop>set TEST=

簡単なテスト:

C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

そのバッチファイルを作成して実行します。

C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something

.batファイルの実行後にTESTの値を見てみましょう。

C:\Users\Oliver\Desktop>echo %TEST%
something

そのため、はい、スクリプトの最後で変数をクリアすることをお勧めします。


さらに良いのは、問題全体を使用SETLOCALENDLOCALて回避することです。

ここで、and .batを使用する新しいファイルを作成しました:SETLOCALENDLOCAL

C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal

クリアTESTしてエコーして、クリーンな状態で開始するようにします。

C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

さて、新しいものを実行しましょう.bat

C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something    
C:\Users\Oliver\Desktop>endlocal

TESTは空のままです:

C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

2
+!明確化のため
Raystafarian

1
素晴らしい例と説明-ありがとう
-ChrisB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.