Есть ли эквивалентная исходная команда в 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"

используйте Git bash для windows, он работает абсолютно нормально!