setlocal
はどのようにバッチファイルで使用しますか?私はスクリプトを学んでいるだけで、非常に簡単な言葉で私に説明したいと思います。バッチファイルでSETLOCALをどのように使用しますか?
私はスクリプトを停止し、< was unexpected at this time
と言いますが、スクリプト内にsetlocal
文を持たないことが関係している可能性があります。
setlocal
はどのようにバッチファイルで使用しますか?私はスクリプトを学んでいるだけで、非常に簡単な言葉で私に説明したいと思います。バッチファイルでSETLOCALをどのように使用しますか?
私はスクリプトを停止し、< was unexpected at this time
と言いますが、スクリプト内にsetlocal
文を持たないことが関係している可能性があります。
最初の行をSETLOCAL
にします。
rem *******Begin Comment**************
rem This program starts the superapp batch program on the network,
rem directs the output to a file, and displays the file
rem in Notepad.
rem *******End Comment**************
@echo off
setlocal
path=g:\programs\superapp;%path%
call superapp>c:\superapp.out
endlocal
start notepad c:\superapp.out
SETLOCAL
の最も頻繁に使用すると、コマンド拡張機能をオンにすると、変数の遅延拡張を可能にすることです:この例は、下記リンク先の記事からですSETLOCAL
詳細については
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
はCommand Line Referenceを見ますMicrosoft TechNet
への直接リンクにこのコードとします(それが実行される前に)%オプション%値は、IFコマンドが解析された一度だけ交換されbecase
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: %option%
)
前のコードは動作しません。この
setlocal EnableDelayedExpansion
If "%getOption%" equ "yes" (
set /P option=Enter option:
echo Option read: !option!
)
チェック:
set var=Before
set var=After & echo Normal: %var% Delayed: !var!
は "before"という質問に対する答えですか? –
これは 'Normal:Before Delayed:After'ですが、Delayed Variable ExpansionはEnabledにする必要があります。 'SET /?'とタイプし、 "最後に遅延環境変数拡張のサポートが追加されました。"に... – Aacini
...出力が何であるかを推測あなたが与えることができSET/Pコマンドは、変数の値を修正するまで、あなたは「遅延」変数値の拡張に必要私はそれがどのように動作するかの例ですか?どのように、なぜそれを使用するのですか? –
リンクされたサイトの最初のセンテンスは、「バッチファイル内の環境変数のローカライゼーションを開始します。ローカライゼーションは、一致するendlocalコマンドが見つかるか、バッチファイルの最後に到達するまで続きます。」つまり、バッチファイル内にしか見えない環境変数(通常はグローバル)を設定し、 'ENDLOCAL'呼び出しが実行されたとき、またはバッチファイルが終了したときにそれらを自動的に消去することができます。 –
はい、これは素晴らしい例です。何かを 'PATH'変数に追加する必要があるが、スクリプトを何度も実行する必要がある場合は、例のようにすることができます。また、スクリプトの後に環境をクリーンアップする必要もありません。 IOWでは 'SET'を実行する前に'setlocal'を呼び出すことで、WindowsシェルスクリプトをBashスクリプト(親シェルの環境を変更できない)のように動作させます。 –