2017-05-11 5 views
-1

PATHのコマンド 'minishift oc-env'によってスローされたコマンドを評価する必要があります。Windows CMDでPATHを含むEvalスクリプト

ただし、変数PATHが上書きされているようです。

C:\Users\budhram>echo %PATH% 
C:\Program Files\Docker\Docker\Resources\bin;C:\Users\budhram\AppData\Local\Temp;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;..... 

C:\Users\budhram>minishift oc-env 
SET PATH=C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%; 
REM Run this command to configure your shell: 
REM  @FOR /f "tokens=*" %i IN ('minishift oc-env') DO @%i 

C:\Users\budhram>SET PATH=C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%; 

C:\Users\budhram>echo %PATH% 
C:\Users\budhram\.minishift\cache\oc\v1.5.0;C:\Program Files\Docker\Docker\Resources\bin;C:\Users\budhram\AppData\Local\Temp;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;.... 

C:\Users\budhram>@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @%i 

C:\Users\budhram>echo %PATH% 
C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%; 

どのようにすればよいでしょうか?
この回答はhttps://stackoverflow.com/a/9370376/1120530でも、私の場合はうまくいかないと思われるsetlocal enableDelayedExpansionを使用することをお勧めします。

答えて

1

あなたはdo句が正しいようだ

SET PATH=C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%; 

を実行します

@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @%i 

実行されますが、問題は%iが示されたコマンドに拡張された後、第二がないことである場合には変数%PATH%を変数の値に変換する展開。

あなたはcallコマンドが%PATH%リファレンスを拡大する第二解析フェーズを強制します

@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @call %i 

で試すことができます。

+0

恐ろしい!スムーズに作業。ありがとう:) – ram

関連する問題