albertminrich
Goto Top

Verzögerte Umgebungsvariablenerweiterung nur für eine batch-Datei aktivieren

Hallo,

ich würde gerne die verzögerte Umgebungsvariablenerweiterung (cmd /v:on) nur für eine batch-Datei aktivieren.
Das geht zwar, wenn ich die Eingabeaufforderung mit cmd /v:on starte und dann innerhalb der Eingabeaufforderung die batch ausführe, aber wie mache ich es, wenn ich die batch per Doppelklick oder Taskplaner ausführen will.
Ich weiss, ich könnte es auch per Registrykey generell aktivieren, will ich aber eigentlich nicht, weil ich nicht weiss, ob dann die 100 anderen batch-Dateien noch so funktionieren, wie sie sollen.

Danke
Martin

Content-ID: 107524

Url: https://administrator.de/forum/verzoegerte-umgebungsvariablenerweiterung-nur-fuer-eine-batch-datei-aktivieren-107524.html

Ausgedruckt am: 07.04.2025 um 17:04 Uhr

miniversum
miniversum 29.01.2009 um 13:24:18 Uhr
Goto Top
Mal ohne getestet zu haben ob das os geht könntest du es so versuchen:
@echo off
if "%1" equ "" start "" /B cmd \v:on /c "%0" bla & goto:eof  

echo ab hier die restliche bisherige Batch
AlbertMinrich
AlbertMinrich 29.01.2009 um 14:49:58 Uhr
Goto Top
Geniale Zeile.
Funktioniert einwandfrei.

Danke und Gruss
Martin
bastla
bastla 29.01.2009 um 15:06:20 Uhr
Goto Top
... und falls es ein wenig weniger sein darf face-wink:
setlocal enabledelayedexpansion
Grüße
bastla
Biber
Biber 29.01.2009 um 15:18:58 Uhr
Goto Top
... um nicht sogar zu sagen
SetLocal DisableDelayedExpansion
... in den Batchen, die nicht verlässlich mit versehentlich aktivierter verzögerter Variablenerweiterung laufen würden.

Grüße
Biber
AlbertMinrich
AlbertMinrich 29.01.2009 um 17:16:46 Uhr
Goto Top
Tja, das ist natürlich auch nicht schlecht.

Danke
miniversum
miniversum 29.01.2009 um 21:51:14 Uhr
Goto Top
setlocal enabledelayedexpansion
Würde sich das nicht auf alle Batch Dateien auswirken die in dieser Zeit laufen / gestartet werden?
bastla
bastla 30.01.2009 um 08:21:00 Uhr
Goto Top
Hallo miniversum!
Würde sich das nicht auf alle Batch Dateien auswirken die in dieser Zeit laufen / gestartet werden?
Da das nächste "endlocal" die Einstellung wieder aufhebt (und beim Beenden eines Batches ein implilzites "endlocal" erfolgt): Nein; nur ein aus diesem Batch gestarteter weiterer Batch übernimmt diese Einstellung ...

Grüße
bastla
miniversum
miniversum 30.01.2009 um 16:50:06 Uhr
Goto Top
Ichhabe den Eingangsbeitrag nochmal gelesen udn festgestellt da sich mich zu sehr auf das "in einer Batch" gestürzt habe. Ich habe es so interpretiert das in einer Batch die Verzögerte auslösung aktiviert wird ohne das es in einer anderen aktiviert wird die gestartet wird während die erste läuft.
War woll fehlinterpretiert von mir.
bastla
bastla 30.01.2009 um 16:59:48 Uhr
Goto Top
Hallo miniversum!

Wenn der zweite Batch nicht durch den ersten Batch (dem mit "setlocal enabledelayedexpanison"), sondern tatsächlich nur während der erste Batch noch läuft, gestartet wird, ist für den zweiten Batch "delayedExpansion" nicht aktiviert ...

Grüße
bastla