Изменить переменную PATH с помощью bat?

Я пытаюсь написать 2 инструмента BATCH, которые изменяют путь к моей системной переменной. Первый должен добавить пункт назначения перед путем, но перед этим сохранить старый путь в текстовом файле, а второй BATCH-файл должен загрузить путь из текстового файла и заменить путь сохраненным, чтобы снова восстановить старый путь. .

@echo. 2>%date:~0%_PATH.txt
@echo %PATH% >> %date:~0%_PATH.txt
@echo "This tool will change the system variable PATH"
@echo "if you want to continue, press any key."
@echo "To cancel press CTRL+C"
@pause

@setx /m PATH  "C:\MinGW\bin;%PATH%"
@echo.
@echo.
@echo "The System variables has been set"
@echo "Your original PATH variable was saved to: %date:~0%_PATH.txt"

@pause

Это первый пакетный файл, который должен добавить C:\MinGW\bin перед PATH. (Дело не в том, что после того, как я запустил командный файл, появилось гораздо больше, чем просто пункт назначения.

@ECHO OFF
ECHO "You are about to restore your system variable PATH to a previous state!"
ECHO "If you want to preform this step, press any key."
ECHO "To cancel the process, press CTRL+C";
ECHO.
SET index=1

SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%f IN (*.*) DO (
   SET file!index!=%%f
   ECHO !index! - %%f
   SET /A index=!index!+1
)

SETLOCAL DISABLEDELAYEDEXPANSION

SET /p selection="Please select by typing the number which file you want to recover      your PATH:"

SET file%selection% > nul 2>&1

IF ERRORLEVEL 1 (
   ECHO Invalid number selected!!  
   EXIT /B 1
)

CALL :RESOLVE %%file%selection%%%
ECHO Selected file name: %file_name%

GOTO :EOF

:RESOLVE
SET file_name=%1
GOTO :EOF

@setx /m PATH %file_name%

И это пакетный файл восстановления, который не будет выбирать выбранный мной файл.

Я надеюсь, что кто-нибудь может мне помочь. Спасибо


person HightronicDesign    schedule 07.08.2014    source источник


Ответы (1)


SETX изменяет только значение в реестре, а не переменную в текущей среде оболочки. Как говорится в документации, когда вы запускаете SETX /?:

NOTE: 1) SETX writes variables to the master environment in the registry.
      2) On a local system, variables created or modified by this tool
         will be available in future command windows but not in the
         current CMD.exe command window.

Если вы хотите изменить значение PATH только в текущей среде, просто используйте обычную команду SET. Если вы хотите сделать и то, и другое, вам нужно будет использовать обе команды.

person Ross Ridge    schedule 07.08.2014
comment
По какой причине вы хотите установить переменную в реестре? Делает ли это его стойким как-то или что-то в этом роде? - person djangofan; 07.08.2014
comment
Да, именно здесь переменная окружения получает свои начальные значения. - person Ross Ridge; 07.08.2014