Variable ist während einer If Abfrage nicht verfügbar
Hallo zusammen!
Ich habe immer wieder das Problem, dass Variablen die während einer If Abfrage durch eine Funktion erstellt wurden, nicht sofort verfügbar sind.
Als konkretes Beispiel;
In der Funktion ReplaceUNCPath wird die Variable ZielordnerUNC erstellt und sollte verfügbar sein (ist sie in der Funktion auch).
Wenn ich mir die Variable mit Echo während der If Abfrage ...
... ausgeben lasse, wird nichts angezeigt.
Wo liegt das Problem?
grüße
Ich habe immer wieder das Problem, dass Variablen die während einer If Abfrage durch eine Funktion erstellt wurden, nicht sofort verfügbar sind.
Als konkretes Beispiel;
If /i "%IsUNCPath%"=="True" (
Call :ReplaceUNCPath "%Zielordner%" "%UNCPath%" ZielordnerUNC
Echo.
Echo Zielordner UNC: "%ZielordnerUNC%"
)
In der Funktion ReplaceUNCPath wird die Variable ZielordnerUNC erstellt und sollte verfügbar sein (ist sie in der Funktion auch).
Wenn ich mir die Variable mit Echo während der If Abfrage ...
If ... (
Call ...
Echo %ZielordnerUNC%
)
... ausgeben lasse, wird nichts angezeigt.
Wo liegt das Problem?
grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 193556
Url: https://administrator.de/forum/variable-ist-waehrend-einer-if-abfrage-nicht-verfuegbar-193556.html
Ausgedruckt am: 20.04.2025 um 07:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
Finde ich persönlich unötig da eine Batch Datei normalerweise nicht an sicherheitskritischen Stellen ausgeführt wird.
Gruß
Zitat von @mayho33:
Hmmm, Bin echt nicht der BATCH-Guru, aber sollte die Variable nicht vor der Verwendung befüllt werden? Wäre wesentlich
sicherer
meinst du sowas in der ArtHmmm, Bin echt nicht der BATCH-Guru, aber sollte die Variable nicht vor der Verwendung befüllt werden? Wäre wesentlich
sicherer
set ZielordnerUNC=NULL
if %ZielordnerUNC%="NULL" (
echo "No UNC Path"
)
else (
echo "Mache irgendwas"
)
Finde ich persönlich unötig da eine Batch Datei normalerweise nicht an sicherheitskritischen Stellen ausgeführt wird.
Gruß
Hallo,
IF, Case, etc. sind Abzweigungen
For, Foreach, While, etc. sind Schleifen
Gruß
Zitat von @ForgottenRealm:
Auch wenn ich die Variable während der FUnktion direkt setze, und nicht über Set %3=... ist sie ausserhalb der Funktion
nicht verfügbar.
Habe es gerade nach gebaut und getestet, anscheinend wird die Variable erst danach zugewiesen. Keine Ahnung warum meine Batch Fähigkeiten sind etwas begrenzt.Auch wenn ich die Variable während der FUnktion direkt setze, und nicht über Set %3=... ist sie ausserhalb der Funktion
nicht verfügbar.
Erst ausserhalb der If Schleife.
Es gibt Keine If Schleife.IF, Case, etc. sind Abzweigungen
For, Foreach, While, etc. sind Schleifen
Gruß
moin,
Zeile 13-35 fasst Du ja auch mit Klammern zu einer Befehlszeile zusammen, um die Umleitung insgesamt in die Datei zu schreiben.
Gruß Phil
- in einer Befehlszeile gibt es jeden Variablenwert in %ProzentZeichen% genau so wieder, wie dieser vor dieser Befehlszeile war oder bestimmt worden ist.
- Klammern fassen den Inhalt zu einer Befehlszeile zusammen also auch den Call zwischendrin.
- IF (Befehl) ELSE Befehl ist auch als eine Befehlszeile zu werten.
Zeile 13-35 fasst Du ja auch mit Klammern zu einer Befehlszeile zusammen, um die Umleitung insgesamt in die Datei zu schreiben.
Gruß Phil