Я знаю, что в мире unix, если вы редактируете файл .profile или .cshrc, вы можете сделать исходный файл ~/.profile или источник ~/.cshrc, чтобы получить эффект от текущего сеанса. Если я что-то изменил в системной переменной в Windows, как я могу заставить ее влиять на текущий сеанс командной строки, не выходя из сеанса командной строки и открывая еще один сеанс командной строки?
Есть ли эквивалентная команда источника в Windows CMD, как в bash или tcsh?
Ответ 1
Я боюсь, что нет, но вы можете начать использовать Powershell, который поддерживает поиск точек. Поскольку окно powershell действительно основано на cmd, поэтому вся ваша команда dos будет продолжать работать, и вы получите новую мощность, гораздо большую мощность.
Ответ 2
В обычной командной строке Windows (например, cmd.exe), просто с помощью call mybat.bat
сделал то, что я хотел. Я получил все переменные окружения, которые он установил.
Ответ 3
В оболочке dos будут поддерживаться файлы .bat, содержащие только присваивания переменным, которые при выполнении будут создавать переменные в текущей среде.
c:> type EnvSetTest.bat
set TESTXYZ=XYZ
c:> .\EnvSetTest.bat
c:> set | find "TESTX"
TESTXYZ=XYZ
c:>
IHTH.
Ответ 4
Следующий пример поможет вам решить вашу проблему.
env.bat
Этот файл предназначен для установки переменных. Его содержимому дан удар.
set name="test3"
test.bat
Наш основной пакетный файл.
call env.bat
call print.bat
pause
Теперь print.bat
пакетный файл print.bat
для печати переменных. Его содержание приведено ниже
echo %name%
Ответ 5
Единственный способ, которым я нашел это, - запустить новое окно 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
Последний cmd запустит новое приглашение cmd с нужными настройками, экспортированными в окно команд.
Ответ 6
Вот обходной путь для некоторых ограниченных вариантов использования. Вы можете прочитать файл команд и выполнить их в строке. Например, вызывающий командный файл выглядит так:
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
:
В файле setup-java.bat
вы не можете использовать %
раскрытия. Вам нужно использовать !
; например:
set JRE_HOME=!JRE_08!
rem
set JRE_TARGET=!JRE_HOME!
Таким образом, вы litterally source
-ing команды из текстового файла. Вам нужно будет проверить, какие команды получены таким образом. Потребовалось несколько испытаний, чтобы установить некоторые переменные среды.
Я не думаю, что мы можем сделать логику или циклы, потому что командный процессор сканирует файл в начале. Я в порядке, просто имея простой обходной путь для повторного использования общих вещей, таких как определения среды. Большинству других вещей не понадобится настоящая команда source
(я надеюсь). Удачи.
Ответ 7
Например, чтобы установить VС# vars
C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
Ответ 8
Используйте Git Bash для Windows, он работает совершенно нормально!