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?
8 answers
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.
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.
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.
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.
source
(Eu espero). Boa sorte.
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%
Por exemplo para definir vc# vars
C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
Usa o Git bash para o windows, funciona perfeitamente!