Я пишу пакетный скрипт для редактирования переменной PATH. Часть моего пути состоит из переменных. Например:% JAVA_HOME%/bin. В стороне моего пакетного сценария я делаю следующее:Переменная Windows Batch, содержащая переменные
FOR %%A IN ("%PATH:;=";"%") DO ECHO %%A | FINDSTR /I /C:%stringToFind% >NUL && SET found=true || SET newPath=!newPath!;%%A
Таким образом,% NEWPATH переменная% будет содержать все пути, которые я хочу сохранить.
Это хорошо, за исключением случаев, когда я сохраняю свой newPath в% PATH% используя SETX. Все мои переменные расширены. Итак, вместо% JAVA_HOME%/bin; Я получаю C: \ PROGRA ~ 1 \ Java \ jdk1.8.0_25 \ bin;
Мой вопрос заключается в том, как сохранить переменные в моем пути как переменные. Как получить пути без расширения переменных. Держите их как:% любых%. Я Googled безрезультатно. Любая помощь очень ценится.
возможно дубликат [как избежать% в CMD Setx?] (Http://stackoverflow.com/questions/6399768/how-to-escape-at-cmd-setx) – famousgarkin
Я видел этот пост. Моя проблема связана с переменными, содержащими переменные. % PATH% уже содержит переменные, поэтому пока я нахожусь в моем цикле for %% A - переменная, содержащая такую строку:% JAVA_HOME%/bin; Проблема в том, что когда я пытаюсь сохранить эту строку или эхо, она оценивает значение переменной. Что такое C: \ PROGRA ~ 1 \ Java \ jdk1.8.0_25 \ bin; Я хочу сохранить его в первоначальной форме. – user1543871
А, я вижу разницу сейчас, спасибо за разъяснение. – famousgarkin