Windowsバッチファイルで使用されるnload変数への必要性または良い習慣と見なされますか?
たとえば、次のコードでは、set myFolder=
最後に必要ですか?
@echo off
set myFolder="C:\Temp\Batchfiles"
echo %myFolder%
set myFolder=
私はこれをオンラインの多くの場所で見ました、確かに変数はバッチファイルが終了すると自動的にアンロードされますか?
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
そのため、はい、スクリプトの最後で変数をクリアすることをお勧めします。
問題全体を回避するには、 SETLOCAL
および ENDLOCAL
を使用することをお勧めします。
ここでは、SETLOCAL
とENDLOCAL
を使用する新しい.bat
ファイルを作成しました。
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%