wake-up-neo.com

Gibt es in Windows CMD einen äquivalenten Quellbefehl wie in bash oder tcsh?

Ich weiß, dass Sie in der Unix-Welt, wenn Sie Ihre .profile- oder .cshrc-Datei bearbeiten, eine Quelle ~/.profile oder eine Quelle ~/.cshrc ausführen können, um die Auswirkungen auf Ihre aktuelle Sitzung zu erhalten. Wenn ich etwas an der Systemvariablen unter Windows geändert habe, wie kann ich dann die aktuelle Eingabeaufforderungssitzung ausführen, ohne die Eingabeaufforderungssitzung zu beenden und eine weitere Eingabeaufforderungssitzung zu öffnen?

27
mart2001

Ich befürchte nicht, aber Sie können Powershell verwenden, das Dot Sourcing unterstützt. Da das Powershell-Fenster wirklich auf cmd basiert, funktionieren alle DOS-Befehle weiterhin, und Sie erhalten neue, viel mehr Power.

6
johnshen64

In der üblichen Windows-Eingabeaufforderung (d. H. Cmd.exe) hat nur call mybat.bat das gemacht, was ich wollte. Ich habe alle Umgebungsvariablen erhalten, die es eingestellt hatte.

35
Eike

Die DOS-Shell unterstützt BAT-Dateien, die nur Zuweisungen zu Variablen enthalten, die bei ihrer Ausführung die Variablen in der aktuellen Umgebung erstellen.

  c:> type EnvSetTest.bat
  set TESTXYZ=XYZ

  c:> .\EnvSetTest.bat

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

IHTH.

12
shellter

Das folgende Beispiel hilft Ihnen, Ihr Problem zu lösen. 

env.bat Diese Datei dient zum Setzen von Variablen. Sein Inhalt wird geblasen.

set name="test3"

test.bat Unsere Hauptbatchdatei. 

call env.bat
call print.bat
pause

Nun print.bat Batchdatei zum Drucken von Variablen. Sein Inhalt ist unten angegeben

echo %name%
2
Fathah Rehman P

Die einzige Möglichkeit, die ich gefunden habe, ist das Starten eines neuen Cmd-Fensters aus meinem eigenen Konfigurationsfenster. z.B:

@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

Der letzte Befehl startet eine neue Eingabeaufforderung mit den gewünschten Einstellungen, die in das Befehlsfenster exportiert werden.

1
Ajay Gautam

Hier ist ein Workaround für einige begrenzte Anwendungsfälle. Sie können eine Datei mit Befehlen einlesen und diese direkt ausführen. Die aufrufende Befehlsdatei sieht zum Beispiel so aus:

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
     :

In der Datei setup-Java.bat können Sie die Erweiterung % nicht verwenden. Sie müssen ! verwenden. z.B.:

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

Sie sind also wörtlich source- Befehle aus einer Textdatei. Sie müssen die Befehle sourced auf diese Weise testen. Es wurden einige Versuche benötigt, um einige Umgebungsvariablen festzulegen. 

Ich glaube nicht, dass wir Logik oder Schleifen ausführen können, da der Befehlsprozessor die Datei beim Start durchsucht. Ich bin in Ordnung, ich habe nur eine einfache Problemumgehung, um freigegebene Dinge wie Umgebungsdefinitionen wiederzuverwenden. Für die meisten anderen Dinge ist kein source-Befehl erforderlich ( ich hoffe ). Viel Glück.

0
will