¿Hay un comando fuente equivalente en Windows CMD como en bash o tcsh?
unix (8)
Sé que en el mundo Unix, si edita su archivo .profile o .cshrc, puede hacer una fuente ~ / .profile o source ~ / .cshrc para obtener el efecto en su sesión actual. Si cambié algo en la variable del sistema en Windows, ¿cómo puedo hacer que afecte a la sesión actual del símbolo del sistema sin salir de la sesión del símbolo del sistema y abrir otra sesión del símbolo del sistema?
Aquí hay una solución para algunos casos de uso limitados. Puedes leer un archivo de comandos y ejecutarlos en línea. Por ejemplo, el archivo de comando de llamada se ve así:
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
:
En el archivo setup-java.bat
no puede usar %
expansion. Necesitas usar !
; p.ej:
set JRE_HOME=!JRE_08!
rem
set JRE_TARGET=!JRE_HOME!
Así que, literalmente, estás originando comandos desde un archivo de texto. Tendrá que probar qué comandos se obtienen de esta manera. Se necesitaron algunos ensayos para establecer algunas variables de entorno.
No creo que podamos hacer lógica o bucles porque el procesador de comandos escanea el archivo al principio. Estoy bien, solo tengo una solución simple para reutilizar cosas compartidas como definiciones de entornos. La mayoría de las otras cosas no necesitarán un comando de source
real ( espero ). Buena suerte.
El shell de dos admitirá archivos .bat que contengan solo asignaciones a variables que, cuando se ejecuten, crearán las variables en el entorno actual.
c:> type EnvSetTest.bat
set TESTXYZ=XYZ
c:> ./EnvSetTest.bat
c:> set | find "TESTX"
TESTXYZ=XYZ
c:>
IHTH.
El siguiente ejemplo te ayudará a resolver tu problema.
env.bat
Este archivo es para configurar variables. Sus contenidos están dados de golpe.
set name="test3"
test.bat
Nuestro archivo principal principal.
call env.bat
call print.bat
pause
Ahora print.bat
archivo por lotes para imprimir variables. Sus contenidos se detallan a continuación.
echo %name%
La única forma en que encontré que esto funciona es lanzar una nueva ventana cmd desde mi propia ventana de configuración. p.ej:
@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
El último cmd iniciará un nuevo indicador de cmd con la configuración deseada exportada a la ventana de comandos.
Me temo que no, pero puedes comenzar a usar Powershell, que es compatible con el origen de puntos. Dado que la ventana de powershell realmente se basa en cmd, todos sus comandos de DOS continuarán funcionando y usted gana nueva potencia, mucho más potencia
Por ejemplo para configurar VC # vars
C:/Windows/System32/cmd.exe /k "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/vcvarsall.bat"
Use git bash para windows, funciona totalmente bien!
En el símbolo del sistema de Windows habitual (es decir, cmd.exe), solo con la call mybat.bat
hizo lo que quería. Obtuve todas las variables de entorno que había establecido.