gelöst for schleife, Variable wird gesetzt, aber beim Echo wird die Variable nicht angezeigt

Mitglied: Blueberry

Blueberry (Level 1) - Jetzt verbinden

20.12.2008, aktualisiert 02:11 Uhr, 7031 Aufrufe, 8 Kommentare

Hallo Zusammen,

Ich hoffe ich habe nicht falsch gesucht und das Thema, dass ich hier anspreche wurde schon zig-Mal angeschaut...

Na jedenfalls habe ich den Folgenden Code:
Und wenn ich ein Echo on habe sehe ich, dass die Variable definiert wird, aber beim Echo die Variable in "vergessenheit" geht... Es heisst nur immer "Echo ist on" oder so ähnlich... Kann mir da jemand helfen ?

Ich danke schon im voraus

Mit freundlichen Grüssen

Blueberry
Mitglied: Biber
20.12.2008 um 01:05 Uhr
Moin Blueberry,

für den CMD-Interpreter ist die FOR-Anweisung, auch wenn sie über mehrere Zeilen formatiert geschrieben wird, eine einzige Anweisung und erst mit der schliessenden Klammer-Zu beendet.
Alle Variablen der Form %var% werden entsprechen einmalig aufgelöst, nämlich dann, wenn diese Zeile als syntaktisch verwertbar eingestuft wurde und die Ausführung losgehen kann.

Wenn die Variablen innerhalb dieser Anweisung neu gesetzt und neu ausgelesen werden, dann musst Du die so genannte "verzögerte Variablenauflösung" oder aus Neudeutsch "Delayed Expansion" aktivieren.
Diejenigen Variablen, die immer erst "zum Zeitpunkt des Anfassens" aufgelöst werden sollen, müssen dann in der Form !var! statt %var% geschrieben werden.

Grüße
Biber
Bitte warten ..
Mitglied: Blueberry
20.12.2008 um 10:01 Uhr
Hallo Biber,

Ich danke dir für deine schnelle Lösung für das Problem. Das mit dem "SetLocal EnableDelayedExpansion " hab ich schon mal gesehen wusste aber nie für was das genau war. Jetzt begreiffe ich das schon ein bisschen mehr. Ich wünsche noch ein schönes Weihnachten und ein schönes neues Jahr!

Und wie kann ich die Variable noch ein 3tes mal brauchen sprich wenn ich noch ein Call :sub1 einbauen möchte ?

Mit freundlichen Grüssen

BLueberry
Bitte warten ..
Mitglied: bastla
20.12.2008 um 12:47 Uhr
Hallo Blueberry!

Wenn Du ohnehin ein Unterprogramm verwenden wolltest, wäre "delayedExpansion" gar nicht erforderlich - das sähe dann so aus:
Im "sub1" kommmt der übergebene Pfad als erster (und hier einziger) Paramer (%1) an. Mit der Schreibweise %~1 werden die den Parameter umgebenden Anführungszeichen entfernt.

Das "goto :eof" in Zeile 3 sorgt dafür, dass das Unterprogramm nach dem Ende der Schleife nicht noch ein weiteres Mal durchlaufen wird, und das "goto :eof" ("Beende das Unterprogramm und springe zurück ins Hauptprogramm!") in der letzten Zeile wäre gar nicht nötig - es dient nur als Vorsichtsmaßnahme, falls (zukünftig) noch ein weiteres Unterprogramm oder ein Sprung vom Hauptprogramm zu einem "Ende"-Teil folgen sollte.

Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
20.12.2008 um 17:31 Uhr
Hallo Bastla,

Ich möchte mit dem Dir in der For-Schleife einen anderen Batch aufrufen ist das möglich ?

Den Code habe ich bereits... Er startet zwar den anderen Batch, aber nicht bei Sub1, sondern von Anfang an...

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: bastla
20.12.2008 um 18:59 Uhr
Hallo Blueberry!

Mein Beispiel oben war für ein internes Unterprogramm gedacht - wenn in einem aufgerufenen externen Batch an einer bestimmten Stelle gestartet werden soll, musst Du dies auch dort festlegen, etwa:
Jetzt kannst Du den "call" aus Deinem Beispiel verwenden und es wird sofort zu der als Parameter angegebenen Stelle gesprungen - falls es diese nicht geben sollte, bricht der Batch allerdings ab ...

Mehr Kontrolle (aber auch mehr Aufwand) hast Du, wenn Du jedes mögliche Sprungziel abfragst, also etwa
Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
21.12.2008 um 11:16 Uhr
Hallo bastla,

Wieder einmal hast du recht :D Aber was ich noch gerne wissen möchte, warum wird die Marke "sub1" als %~1 übergeben ? also ich nehme an das es sich bei dem %~1 um eine eins und nicht um das kleine "L" handelt, den die sehen mehr oder weniger gleich aus...

Mit freundlichen Grüssen

Blueberry
Bitte warten ..
Mitglied: bastla
21.12.2008 um 15:15 Uhr
Hallo Blueberry!

warum wird die Marke "sub1" als %~1 übergeben ?
Falls sich die Frage tatsächlich vor allem auf die "1" bezieht: Es handelt sich tatsächlich um die Ziffer. Jeder Batch kann die Parameter %0 bis %9 verwenden, wobei %0 die Batchdatei selbst repräsentiert und ab %1 die an den Batch übergebenen Parameter - ein in "C:\Scripts\Params.cmd" gespeicherter Batch würde bei einem Aufruf mit
folgende Parametervariablen liefern:
Wie zu erkennen ist, werden umgebende Anführungszeichen, egal ob erforderlich (wie für "Param Zwei") oder nicht, in der Variablen "mitgeliefert". Um sicher sein zu könnnen, dass keine solchen Anführungszeichen in der Variablen stehen, können diese mit der Schreibweise
entfernt werden (was ich zumeist gewohnheitsmäßig mache); waren ohnehin keine da, ist dies auch kein Problem - im Ergebnis sind auf jeden Fall keine Anführungszeichen mehr vorhanden.

Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
21.12.2008 um 17:14 Uhr
Hallo bastla,

Das mit dem übergeben wusste ich, aber ich wusste nicht das indiesem Fall auch ":sub1" so über geben wird... Danke nochma

Gruss
Blueberry
Bitte warten ..
Heiß diskutierte Inhalte
Hardware
Schwarmwissen gefragt: Rätselstunde am Samstag Abend - LWL Verkabelung
gelöst Xaero1982FrageHardware32 Kommentare

Nabend Zusammen, heute Abend gibt es ein kleines Rätsel für euch was es zu lösen gilt. Die Lösung werde ...

Vmware
ESXi für Raspberry Pi
sabinesInformationVmware18 Kommentare

VMware hat den ESXi für den Raspberry Pi (zu Testzwecken) vorgestellt, läuft 180 Tage auf dem Pi 4 mit ...

Backup
Veeam Backup-Server aus der Domäne nehmen
redhorseFrageBackup16 Kommentare

Guten Morgen, da in unserer Backupumgebung ein Hardwaretausch ansteht, konzipiere ich gerade Möglichkeiten die Sicherheit zu erhöhen. Konkret geht ...

Windows Server
Server mit AMD EPYC 7F52 (1Socket) wird als 2 Socket Server angezeigt
LordXearoFrageWindows Server11 Kommentare

Hallo Zusammen, ich komme mit meinem Problem nicht so recht weiter und hoffe aufjemanden der noch weitere Ideen hat. ...

Notebook & Zubehör
Surface pro 3 oder aktueller
devazubiFrageNotebook & Zubehör11 Kommentare

Moin moin zusammen, ich möchte eine kurze Umfrage/Feedbackrunde starten. Ich habe gerade angefangen Wirtschaftsinformatik berufsbegleitend zu studieren. Ich würde ...

Outlook & Mail
Mails Farblich kennzeichnen für mehrer PCs ohne Exchange
gelöst luzifermbFrageOutlook & Mail10 Kommentare

Guten Tag, ich brauche Hilfe zu MS Outlook! Ich habe eine kleines Firmennetzwerk und möchte gerne mit 3 PCs ...

Ähnliche Inhalte
Router & Routing
Amazon Echo
gruener.pumaFrageRouter & Routing22 Kommentare

Hi, Ich habe mal folgende technische Frage, die ich nirgendwo beantwortet finde. Wenn ich uebers Internet (nicht im Wlan) ...

Batch & Shell

Echo Ausgabe ohne Variablenauflösung

gelöst bartek76FrageBatch & Shell9 Kommentare

Hallo Gemeinde, habe eine simple Frage, auf die ich aber bis jetzt keine Antwort fand. Möchte per Batch den ...

Sicherheit

Millionen Euro in den Sand gesetzt?

transoceanInformationSicherheit3 Kommentare

Moin, der Bundestrojaner ist offenbar für die Katz. Gruß Uwe

Windows Userverwaltung

Berechtigungen unter Sicherheit werden falsch gesetzt

DanielG1974FrageWindows Userverwaltung

Guten Tag Leute. Ich hoffe, ich habe das Thema dem richtigen Bereich zugeordnet. Es geht um die Berechtigungen von ...

Windows Server

NTFS Berechtigungen - Effektiv mehr Berechtigungen als gesetzt

staybbFrageWindows Server2 Kommentare

Hallo zusammen, ich habe auf einem noch Windows Server 2008 mehrere NTFS Freigaben auf denen Domain Gruppen verschieden berechtigt ...

Batch & Shell

BATCH: Sonderzeichen in Datei schreiben mit echo

gelöst SchottenrockFrageBatch & Shell4 Kommentare

Hallo, in einer recht umfangreichen Prozedur muss ich nun Postscript Programmbefehle in eine Datie schreiben (unwichtig, aber wen's interessiert: ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud