Есть ли эквивалентная исходная команда в Windows CMD, как в bash или tcsh?
Я знаю, что в мире unix, если вы редактируете свой .профиль или. cshrc файл, вы можете сделать источник ~/.профиль или источник ~/.cshrc, чтобы получить эффект на вашем текущем сеансе. Если я что-то изменил в системной переменной в Windows, как я могу повлиять на текущий сеанс командной строки без выхода из сеанса командной строки и открытия другого сеанса командной строки?
8 ответов
боюсь, что нет, но вы можете начать использовать Powershell, который поддерживает поиск точек. Поскольку окно powershell действительно основано на cmd, все ваши команды dos будут продолжать работать, и вы получите новую власть, гораздо больше власти.
в обычной командной строке 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.
единственный способ, которым я нашел это, - запустить новое окно 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 с нужными настройками, экспортированными в командное окно.
здесь решение для некоторых ограниченных случаях использования. Вы можете читать в файле команд и выполнять их в строке. Например, вызывающий командный файл выглядит так:
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!
Итак, вы мусорно source
-ing команды из текстового файла. Вам нужно будет проверить, какие команды источников таким образом. Потребовалось несколько испытаний, чтобы установить некоторые переменные окружения.
Я не думаю, что мы можем делать логику или циклы, потому что командный процессор сканирует файл в начале. Я в порядке, просто имея простой обходной путь для повторного использования общих вещей, таких как определения среды. Большинство других вещей не нуждаются в фактическом
ниже пример поможет вам решить вашу проблему.
env.bat
этот файл предназначен для установки переменных. Его содержимое выдают ударом.
set name="test3"
test.bat
наш основной пакетный файл.
call env.bat
call print.bat
pause
теперь print.bat
пакетный файл для печати переменных. Его содержание приведено ниже
echo %name%
например, чтобы установить VC# vars
C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"