コンテキストPATH:最後に別のパス''を追加して更新するWindowsバッチスクリプトを呼び出す必要がありますxxxが、:
- 重複なし(' 'のようなPATHに
''を追加する場合は、' 'のように更新する必要があります)xxxaaa;xxx;bbbPATHaaa;bbb;xxx - 集計なし
(''で終わることなくスクリプトを繰り返し呼び出すことができますaaa;bbb;xxx;xxx;xxx;...)
私が試したこと:
次の関数は重複を処理し、ジョブを実行します
:cleanAddPath -- remove %~1 from PATH, add it at the end of PATH
SETLOCAL ENABLEDELAYEDEXPANSION
set PATH=!PATH:%~2=!
set PATH=!PATH:;;=;!
set PATH=%PATH%;%~2
set P=!P:;;=;!
echo %PATH%
echo -------------
ENDLOCAL
exit /b
ただし、遅延拡張ローカルモードが必要です。つまり、スクリプトの最後(またはここでは関数の最後cleanAddPath)で、設定されているものはすべて破棄され%PATH%ます。
ユーザー(スクリプトを作成している)にオプションを指定して起動するように依頼することもできますがcmd(cmd /V:ON遅延拡張をアクティブにするか、デフォルトでオフにします)、それは実用的ではありません。
上記の方法で変数を変更し、そのスクリプトを呼び出した後もPATH現在のDOSセッションで変数を更新するにはどうすればよいですか?