2016-08-22 1 views
0

Я хочу запустить что-то вроде этого:Как изменить PATH окр в cmd.exe/с в ОС Windows

cmd /c "set ""Path=V:\;%Path%"" & ECHO. %Path% & PAUSE" 

Но есть проблема: появляется окно командной строки, только на мгновение, а затем исчезает. Я создаю тест .bat (как echo.1: %1 и 2,3 ...), чтобы проверить, как он ведет себя и ...

0: "V:\test.bat" 
1: /c 
2: "set ""Path=V:\; 
3: 
(4-9 the same) 

Когда я заменяю% с, например, 5, второй аргумент выглядеть "set ""Path=V:\;5Path5"" & ECHO. 5Path5 & PAUSE", но это не то, что я хочу. Я думаю, может возникнуть проблема с разбором% Path% внутри этой команды оболочки.

Я попытался так же:

cmd /c "set ""Path=V:\;%%Path%%"" & ECHO. %%Path%% & PAUSE" 
cmd /c "set ""Path=V:\;%%%Path%%%"" & ECHO. %%%Path%%% & PAUSE" 
cmd /c "set ""Path=V:\;%%%%Path%%%%"" & ECHO. %%%%Path%%%% & PAUSE" 
cmd /c "set ""Path=V:\;%%%%%Path%%%%%"" & ECHO. %%Path%%%%% & PAUSE" 
cmd /c "set ""Path=V:\;%%%%%%%%Path%%%%%%%%"" & ECHO. %%%%%%%%Path%%%%%%%% & PAUSE" 
cmd /c "set ""Path=V:\;^%Path^%"" &ECHO.^%Path^%&PAUSE" 
cmd /c "set ""Path=V:\;^%%Path^%%"" &ECHO.^%Path^%&PAUSE" 
cmd /c "set ""Path=V:\;\%Path\%"" &ECHO.\%Path\%&PAUSE" 

Я редактируя пост во время моих следующих тестов ...

Edit: Я только заметил, что я не могу даже использовать просто: cmd /c "echo %PATH% & PAUSE"

+0

После дополнительных тестов я подозреваю, что проблема заключается в том, что я не могу передать строку, содержащую '% path%' (и '% windir%' и некоторые другие, НЕ ВСЕ env vars) вне окна линии cmd. – PsychoX

ответ

0

Я прихожу к решению. Что мне нужно:

cmd /c "set ""Path=V:\;%Path:~0%"" &ECHO.%Path:~0%&PAUSE" 

Это выглядеть Windows, заменить %PATH% с этим окр переменного контентом (больше путей точкой с запятой), даже в Run (Win + R), CMD (.exe), ShellExec (WScript/WinAPI). Поэтому он не может использоваться как часть аргумента в ярлыке (мне нужно).

0

Это Безразлично похоже, работает, потому что xx оценивается до начала cmd

cmd /c "set xx=yyyyyy & echo %xx% & PAUSE" 

Это доказывает, что он работает, переменная установлена ​​правильно:

cmd /c "set xx=yyyyyy & set xx & PAUSE" 

выход:

xx=yyyyyy 

Другой способ избежать %:

cmd /c "set xx=yyyyyy & ECHOxx.bat & PAUSE" 

(ECHOxx.bat это скрипт, который echo %xx%)

выход

yyyyyy 

Для пути, это немного сложно, как вы сами заметили, но он тоже работает отлично:

cmd /c "set PATH=%CD%\subdir;"%PATH%" & echoxx.bat" 

это работает: echoxx.bat был перемещен в каталог subdir, и найдено ,

+0

Проблема в другом месте ... Похоже, что я не могу использовать строку '% PATH%' как часть параметра, переданного в 'cmd/c'. – PsychoX

+0

Я только что понял. –

+0

Я до сих пор не могу использовать PATH изменения (я попробовал 'cmd/c" установить Path = V: \;% Path% & ECHO.% Path% & PAUSE "'), потому что он не может позволить мне использовать '% PATH%'. – PsychoX