Я знаю, что в мире unix, если вы редактируете свой .profile или .cshrc файл, вы можете сделать source ~/.profile или source ~/.cshrc, чтобы получить эффект для текущего сеанса. Если я изменил что-то в системной переменной в Windows, как я могу повлиять на текущую сессию командного интерпретатора, не выходя из нее и не открывая другую сессию командного интерпретатора?
В обычной командной строке Windows (т.е. cmd.exe) простое использование команды call mybat.bat
сделало то, что я хотел. Я получил все переменные окружения, которые он установил.
Оболочка dos поддерживает файлы .bat, содержащие только присваивания переменным, которые при выполнении создают переменные в текущем окружении.
c:> type EnvSetTest.bat
set TESTXYZ=XYZ
c:> .\EnvSetTest.bat
c:> set | find "TESTX"
TESTXYZ=XYZ
c:>
IHTH.
Боюсь, что нет, но вы можете начать использовать Powershell, который поддерживает точечную обработку. Поскольку окно powershell действительно основано на cmd, все ваши команды dos будут продолжать работать, и вы получите новые возможности, гораздо большие возможности.
Следующий пример поможет вам решить вашу проблему.
`ОКР.этот bat-файл для установки переменных. Его содержание даются удар.
set name="test3"
`тест.летучая мышь-наша главная пакетный файл.
call env.bat
call print.bat
pause
Теперь печать.пакетный файл bat для печати переменных. Ее содержание приведены ниже
echo %name%
Единственный способ я нашел, чтобы работать, чтобы запустить новое окно cmd из моего собственного окна настроек. например:
@echo off
echo Loading...
setlocal enabledelayedexpansion
call 1.cmd
call 2.bat
...
...
if "%LocalAppData%"=="" set LocalAppData=%UserProfile%\Local Settings\Application Data
SET BLAHNAME=FILE:%LocalAppData%\BLAH
call blah blah
cmd
Последние ЦМД будет запущен новый командной строки с нужными параметрами экспортируется в командном окне.
Здесь'ы workaround для некоторых ограниченных случаях использования. Вы можете прочитать в файл команд и выполнять их в линию. Например, команды вызова файлов выглядит так:
echo OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:
echo. ----------------
echo. set-up java
echo. ----------------
echo.
rem call %DEV_SCRIPTS%\setup-java
for /F "tokens=*" %%A in ( %DEV_SCRIPTS%\setup-java.bat ) do (
%%A
)
call %DEV_SCRIPTS%\show-java
:
В настройки-Ява.bat файл вы можете'т использовать
%расширение. Вы должны использовать
!`; например:
set JRE_HOME=!JRE_08!
rem
set JRE_TARGET=!JRE_HOME!
Так что вы буквально "источник" -Инг команды из текстового файла. Вам нужно будет проверить, какие команды источников на этом пути. Потребовалось несколько попыток, только чтобы установить некоторые переменные окружения.
Я не'т думаю, что мы можем сделать логику или петель, потому что командный процессор сканирует файл в начале. Я ок, просто имея простое решение для повторного использования общих вещей, как определений среды. Большинство других вещей, выиграл'т нужен реальный "источник" команды (я надеюсь). Удачи.
Например, чтобы установить ВК# Варс
C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"