CMD - Eintrag von Werten in Variablenform
FOR-Konstrukt, "Optionen ... , eol="
Guten Tag allerseits,
ich bin sehr froh über die kürzlich hier erschienene Anweisung von Heysel, ein Netzwerk per Script unter Verwendung von 'RMTSHARE' zu starten. Bei der Umsetzung der Aufgabe stoße ich aber wieder auf rein handwerkliche Schwierierigkeiten unter CMD (die mit der Netzwerkaufgabe nichts zu tun haben.)
Wegen besserer Übersichtlichkeit will ich sämtliche Vorgaben des Netzwerkes (Freigaben, Laufwerkszuweisungen pp) aus einer einheitlichen Textdatei auslesen:
"FOR /F "eol=0 tokens=2,3,4,5,6 delims=;" %%i IN (%nbasfile%) DO .... "
dabei sollen - je nach Workstation - unterschiedliche Zeilenbereiche der Textdatei (%nbasfile%) ausgewertet werden. Bei direktem Eintrag des Zeilenkopfes unter "eol= ... " (etwa 0 oder 1) ist das kein Problem. Dies tritt vielmehr auf, wenn ich diesen Wert für 'eol' als Variable eintragen will:
Der Eintrag "eol=%sperrmrk% .... " führt nämlich zu einem Syntaxfehler, der dieses Konstrukt unbrauchbar macht, so daß ich zu umständlichen bedingten GOTO-Anweisungen greifen müßte.
Eine zwar nur ähnliche Unsicherheit ergibt sich für mich bei RMTSHARE, wenn ich dort die Option /REMARK: mit der Variablen %Kommentar% belegen will. Das führt zwar nicht zu einem Syntaxfehler, aber ich kann die korrekte Wirkungsweise auch nicht kontrollieren.
Ich bitte um Euren Rat, insbesondere in der Frage, ob und wie ich den Wert von 'eol=' als Variable eingeben könnte.
Danke im Voraus und beste Grüße
Jürgen
Guten Tag allerseits,
ich bin sehr froh über die kürzlich hier erschienene Anweisung von Heysel, ein Netzwerk per Script unter Verwendung von 'RMTSHARE' zu starten. Bei der Umsetzung der Aufgabe stoße ich aber wieder auf rein handwerkliche Schwierierigkeiten unter CMD (die mit der Netzwerkaufgabe nichts zu tun haben.)
Wegen besserer Übersichtlichkeit will ich sämtliche Vorgaben des Netzwerkes (Freigaben, Laufwerkszuweisungen pp) aus einer einheitlichen Textdatei auslesen:
"FOR /F "eol=0 tokens=2,3,4,5,6 delims=;" %%i IN (%nbasfile%) DO .... "
dabei sollen - je nach Workstation - unterschiedliche Zeilenbereiche der Textdatei (%nbasfile%) ausgewertet werden. Bei direktem Eintrag des Zeilenkopfes unter "eol= ... " (etwa 0 oder 1) ist das kein Problem. Dies tritt vielmehr auf, wenn ich diesen Wert für 'eol' als Variable eintragen will:
Der Eintrag "eol=%sperrmrk% .... " führt nämlich zu einem Syntaxfehler, der dieses Konstrukt unbrauchbar macht, so daß ich zu umständlichen bedingten GOTO-Anweisungen greifen müßte.
Eine zwar nur ähnliche Unsicherheit ergibt sich für mich bei RMTSHARE, wenn ich dort die Option /REMARK: mit der Variablen %Kommentar% belegen will. Das führt zwar nicht zu einem Syntaxfehler, aber ich kann die korrekte Wirkungsweise auch nicht kontrollieren.
Ich bitte um Euren Rat, insbesondere in der Frage, ob und wie ich den Wert von 'eol=' als Variable eingeben könnte.
Danke im Voraus und beste Grüße
Jürgen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67220
Url: https://administrator.de/contentid/67220
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
2 Kommentare
Neuester Kommentar
Moin Juergenl,
wenn du die "Optonen", also die Werte der Schlüsselworte "eol","Delims", "tokens" etc. per Variable setzen willst, musst Du eine weitere Instanz der cmd.exe öffnen.
Also z.B.
> das würde die "innere" FOR-Anweisung nacheinander mit der EOL-Werten [eol=0 eol=# eol=;] ausführen.
[das Semikolon muss in Anführungszeichen, da es sonst ignoriert werden würde,
deshalb diese Auflösung mit %%~x statt %%x]
Aber:
Falls Du in dem "DO..."-Teil der inneren For-Anweisung einer Variablen etwas zuweisen willst, wird dieser Wert hinterher nicht sichtbar sein. Denn dieses Set wiederum macht die mit cmd/c neu geöffnete Instanz.
Ein "Echo %%i %%j %%k ... >>logfile.txt" dagegen macht keine Probleme.
Grüße
Biber
wenn du die "Optonen", also die Werte der Schlüsselworte "eol","Delims", "tokens" etc. per Variable setzen willst, musst Du eine weitere Instanz der cmd.exe öffnen.
Also z.B.
For %%x in (0 # ";") do cmd /c FOR /F "eol=%%~x tokens=2,3,4,5,6 delims=;" %%i IN (%nbasfile%) DO ....
> das würde die "innere" FOR-Anweisung nacheinander mit der EOL-Werten [eol=0 eol=# eol=;] ausführen.
[das Semikolon muss in Anführungszeichen, da es sonst ignoriert werden würde,
deshalb diese Auflösung mit %%~x statt %%x]
Aber:
Falls Du in dem "DO..."-Teil der inneren For-Anweisung einer Variablen etwas zuweisen willst, wird dieser Wert hinterher nicht sichtbar sein. Denn dieses Set wiederum macht die mit cmd/c neu geöffnete Instanz.
Ein "Echo %%i %%j %%k ... >>logfile.txt" dagegen macht keine Probleme.
Grüße
Biber