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-Key: 107524

Url: https://administrator.de/contentid/107524

Printed on: April 18, 2024 at 10:04 o'clock

Member: miniversum
miniversum Jan 29, 2009 at 12:24:18 (UTC)
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
Member: AlbertMinrich
AlbertMinrich Jan 29, 2009 at 13:49:58 (UTC)
Goto Top
Geniale Zeile.
Funktioniert einwandfrei.

Danke und Gruss
Martin
Member: bastla
bastla Jan 29, 2009 at 14:06:20 (UTC)
Goto Top
... und falls es ein wenig weniger sein darf face-wink:
setlocal enabledelayedexpansion
Grüße
bastla
Member: Biber
Biber Jan 29, 2009 at 14:18:58 (UTC)
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
Member: AlbertMinrich
AlbertMinrich Jan 29, 2009 at 16:16:46 (UTC)
Goto Top
Tja, das ist natürlich auch nicht schlecht.

Danke
Member: miniversum
miniversum Jan 29, 2009 at 20:51:14 (UTC)
Goto Top
setlocal enabledelayedexpansion
Würde sich das nicht auf alle Batch Dateien auswirken die in dieser Zeit laufen / gestartet werden?
Member: bastla
bastla Jan 30, 2009 at 07:21:00 (UTC)
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
Member: miniversum
miniversum Jan 30, 2009 at 15:50:06 (UTC)
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.
Member: bastla
bastla Jan 30, 2009 at 15:59:48 (UTC)
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