@ECHO OFF
SETLOCAL
SET "newpython=C:\Python;C:\Python\Scripts"
SET "newpath="
:temploop
SET tempfile=%random%%random%%random%
IF EXIST "%temp%\%tempfile%*" GOTO temploop
SET "tempfile=%temp%\%tempfile%"
CALL :showpath >"%tempfile%"
SET "response=x"
FOR /f "delims=" %%p IN ('type "%tempfile%"') DO (
CALL :addsegment "%%p"
IF NOT DEFINED response DEL "%tempfile%"&GOTO :EOF
)
SET "newpath=%newpython%%newpath%
DEL "%tempfile%"
CALL :getresp "Apply new PATH=%newpath% [Y/N/Q]?"
IF /i "%response%"=="Y" ECHO SETX PATH "%newpath%"
GOTO :EOF
:addsegment
SET "segment=%~1"
IF /i "%segment%"=="%segment:python=%" SET response=N&GOTO nosdel
CALL :getresp "Delete %segment% from path [Y/N/Q]?"
:nosdel
IF /i "%response%"=="N" SET "newpath=%newpath%;%segment%"
GOTO :eof
:getresp
SET "response="
SET /p "response=%~1 "
IF /i "%response%"=="Y" GOTO :eof
IF /i "%response%"=="Q" SET "response="&GOTO :eof
IF /i NOT "%response%"=="N" ECHO Please respond Y N or Q to quit&GOTO getresp
GOTO :eof
:showpath
ECHO(%path:;=&ECHO(%
GOTO :eof
Installation of python - well, that's up to you. Don't know where it will be installed from, or to - yor job to find out.
Assuming the new directories are concatenated and separated by ; in variable newpython
and noting that directory-segment separators are \ not / (which is used for switches) then the above:
establishes a temporary file
analyses the path
, presenting each segment to be deleted or no
re-assembles the path and prefixes the newpython
directories.
Asks whether to apply the changes.
I don't know which options you require for the setx
, so the command is simply ECHO
ed. You'd need to remove the ECHO
from the SETX
line to activate the setting of the path
variable.
Note also that SETX
does not set the target variable in existing or the current CMD
instances - only those created in the future.