So beschränken Sie die lokale Änderung der Umgebungsvariablen anhand der Batchdatei

0
  • Ich habe zwei Batch-Dateien x.bat und y.bat.
  • Ich rufe y.bat von x.bat an.
  • Die Datei y.bat setzt eine env Variable wie: setze ABC =
  • Einschränkung ist, dass ich diese Y.bat-Datei nicht ändern kann, aber ich möchte, dass meine Variable "ABC" als etwas anderes festgelegt wird.
  • Wie kann ich "ABC" in X.bat so einstellen, dass es nicht durch den Befehl a.bat file set überschrieben wird?
RISHABH RASTOGI
quelle

Antworten:

0

Stellen Sie in Ihrer Batchdatei ABC auf eine andere Variable ein. Sie können dies wie folgt tun:

set DEF=%ABC%

ein Beispiel:

set ABC=testing
set DEF=%ABC%
set ABC=changed

echo %ABC%
:: prints: changed

echo %DEF%
:: prints: testing
LPChip
quelle
Ich möchte nicht, dass der Variablenname geändert wird, da er Abhängigkeiten hat. Stattdessen möchte ich nicht, dass der Befehl set in Y.bat gelesen wird, ohne Änderungen in der Datei Y.bat vorzunehmen.
RISHABH RASTOGI
Das ist nicht möglich.
LPChip
Sie können die Variable natürlich nach der Ausführung zurücksetzen. Sie können X.bat jedoch nicht zwingen, den in Y.bat angegebenen Wert zu verwenden, wenn X.bat diesen Wert ändert.
LPChip
0

Sie können nicht vermeiden y.bat vom Ändern des Wertes in der Variablen. Die Umgebungsvariablen können weder als Konstanten definiert noch als schreibgeschützt oder schreibgeschützt markiert werden. Wenn die aufgerufene Batchdatei die Variable ändert und Sie die Batchdatei nicht ändern können, können Sie die Änderung nicht vermeiden.

Das einzige, was Sie vermeiden können, ist die Weitergabe der Änderungen in der Variablen, die Auswirkungen auf die x.bat

x.bat

@echo off

    set "abc=set from x.bat"

    setlocal
    call y.bat
    endlocal

    echo %abc%

y.bat

@echo off
    set "abc=changed value"

setlocal generiert eine Kopie des Umgebungsbereichs und setzt diese Kopie als aktiv. Alle Änderungen werden in dieser Kopie bis zum nächsten durchgeführt endlocal Dadurch wird die Kopie verworfen und die vorherige Umgebung wiederhergestellt.

MC ND
quelle