windows bash unix cmd tcsh

¿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.