Existe um comando Fonte equivalente no Windows CMD como no bash ou tcsh?

Eu sei que no mundo unix, se você editar o seu .perfil ou .ficheiro cshrc, você pode fazer um ficheiro de código ~/.perfil ou fonte ~/.cshrc para obter o efeito na sua sessão atual. Se eu alterei alguma coisa na variável do sistema no Windows, como posso fazê-lo efetuar a sessão de prompt do comando actual sem sair da sessão de prompt do comando e abrir outra sessão de prompt do comando?

Author: eryksun, 2012-05-01

8 answers

Receio que não, mas podes começar a usar o Powershell, que suporta o fornecimento de pontos. Uma vez que a janela powershell é realmente baseada no cmd, então todo o seu comando dos continuará a funcionar, e você ganha novo poder, muito mais poder.
 5
Author: johnshen64, 2012-05-01 18:40:20

Na linha de comandos habitual do Windows (isto é, cmd.exe), apenas usando {[[0]} fez o que eu queria. Tenho todas as variáveis de ambiente que tinha definido.

 32
Author: Eike, 2018-03-16 09:05:52

A linha de comandos dos irá suportar .arquivos bat contendo apenas atribuições para variáveis que, quando executadas, irão criar as variáveis no ambiente atual.

  c:> type EnvSetTest.bat
  set TESTXYZ=XYZ

  c:> .\EnvSetTest.bat

  c:> set | find "TESTX"
  TESTXYZ=XYZ
  c:>

IHTH.

 12
Author: shellter, 2013-02-19 11:27:34

A única maneira que encontrei isto para funcionar é lançar uma nova janela cmd da minha própria janela de configuração. eg:

@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

O último cmd irá lançar uma nova linha de comandos com a configuração desejada exportada para a janela de comandos.

 1
Author: Ajay Gautam, 2013-04-25 17:13:45

Aqui está uma soluçãopara alguns casos de uso limitado. Você pode ler-em um arquivo de comandos e executá-los em linha. Por exemplo, o ficheiro de comando de chamada parece-se com:

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
     :

No ficheiro setup-java.bat não pode usar a expansão %. Tem de utilizar !; por exemplo:

    set  JRE_HOME=!JRE_08!
    rem        
    set  JRE_TARGET=!JRE_HOME!

Então você está literalmente source-ing comandos de um ficheiro de texto. Terá de testar os comandos obtidos desta forma. Foram precisos alguns ensaios só para definir algumas variáveis de ambiente.

Acho que não podemos fazer lógica ou loops porque o processador de comandos verifica o ficheiro no início. Eu estou OK apenas tendo um simples workaround para reutilizar coisas compartilhadas como definições de ambiente. A maioria das outras coisas não precisará de um comando real source (Eu espero). Boa sorte.
 0
Author: will, 2018-06-07 00:31:58

Seguir o exemplo irá ajudá-lo a resolver o seu problema.

env.bat este ficheiro é para definir variáveis. O seu conteúdo é dado um golpe.

set name="test3"

test.bat o nosso ficheiro em lote principal.

call env.bat
call print.bat
pause

Agora print.bat ficheiro em lote para imprimir variáveis. O seu conteúdo é o seguinte

echo %name%
 0
Author: Fathah Rehman P, 2018-06-11 07:31:26

Por exemplo para definir vc# vars

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
 -1
Author: elGuru, 2014-05-07 19:22:17

Usa o Git bash para o windows, funciona perfeitamente!

 -2
Author: Adwait_07, 2018-06-11 07:26:22