0

list.txt次のようなディレクトリで構成されるテキスト ファイルがあります。

C:\Program Files\gs\gs9.07\bin
C:\Program Files (x86)\Adobe\Reader 11.0\Reader
C:\Program Files (x86)\Google\Chrome\Application
C:\Program Files (x86)\cwRsync\bin
C:\Program Files (x86)\PDF Labs\PDFtk Server\bin

list.txt各項目をシステムPATH環境変数に永続的に追加するバッチ ファイルを作成したいと考えています。

私の失敗した試みは次のとおりです。

rem batch.bat
for /f "delims=" %%x in (list.txt) do (setx PATH "%PATH%;%%x" /m)

管理者権限で呼び出しbatch.batますが、何も追加されませんPATH。それを解決するのを手伝ってもらえますか?

4

1 に答える 1

1
@ECHO OFF
setlocal
SET testvar=%PATH%
FOR /f "delims=" %%x IN (list.txt) DO (
CALL SET testvar=%%testvar%%%%x;
)
setx testvar "%testvar%"

まあ - これは将来の呼び出しのために 'testvar' を設定します - 私は変更したくありませんPATH; 現在のものを含む既存のインスタンスは変更されません (ドキュメントに記載されています)。

実装の問題は、FOR ループが解析されるとき%var%に、ループが実行される前にその時点で存在していた値に置き換えられることです。その結果、コマンドは次のように実行されました

setx path "(yourexistingpath);C:\Program Files\gs\gs9.07\bin"
setx path "(yourexistingpath);C:\Program Files (x86)\Adobe\Reader 11.0\Reader"
...

追加されたファイル(のみ)の最終行に従ってパスを設定する必要があります

TESTVAR...そしてもちろん、CURRENT環境に設定するために必要なことは、を削除することSETLOCALです(実際には、テスト中に環境をきれいに保つためだけに存在します)または行を追加します

ENDLOCAL&set testvar=%testvar%
于 2013-03-16T16:47:40.087 に答える