messebe
Goto Top

Problem mit Variableinhalt

MoinMoin,
hier werden Sie geholfen ??
Ich hoffe mal ja

ich habe da ein kleines Problem mit dem ein- und auslesen von Variablen. Wenn ich einer Variablen den Wert
"Dokumente und Einstellungen\username\Eigene Dateien"

zuweise und sie dann mit set anzeigen lassen seht der Wert drin.
Nutze ich sie aber in einer for . . in ... do schleife, dann erhalte ich nur den Wert:

"Einstellungen\username\Eigene"

Der Rest geht verloren.
Wieso, Weshalb Warum, wer nicht fragt bleibt dumm

Content-ID: 131148

Url: https://administrator.de/forum/problem-mit-variableinhalt-131148.html

Ausgedruckt am: 28.12.2024 um 10:12 Uhr

60730
60730 07.12.2009 um 16:24:32 Uhr
Goto Top
möchte, dass du mal set eingibst und dir die Ausgabe des Befehls ansiehst.
Habe irgendwie einen Sperrrigel im Kopf
Ich hoffe, der wink mit dem Zaunpfahl hat den Riegel gelöst.
messebe
messebe 07.12.2009 um 16:29:55 Uhr
Goto Top
Dann steht es richtig drin, die komplette angabe Dokumente und Einstellungen\xxx\eigene Dateien
60730
60730 07.12.2009 um 16:35:46 Uhr
Goto Top
Zitat von @messebe:
Dann steht es richtig drin, die komplette angabe Dokumente und Einstellungen\xxx\eigene Dateien
na dann...

schreib doch mal, was ist Montags denn so besonderes?
oder welche der 3 bekannten Bätche nimmst du denn?

btw: Wald Bäume Zaunpfahl Groschen schon gefallen?
Offensichtlich nicht.

Wer sich
  • keine Mühe beim Frage stellen
  • mir grußlos an die Euter will
  • es beim ersten Wink mit dem Zaunpfahl immer noch nicht gemerkt hat

dem kann und will ich nicht helfen.

keine Arme - keine Kekse
messebe
messebe 07.12.2009 um 16:43:15 Uhr
Goto Top
Wenn ich set eingebe, dann steht der es richtig drin, das Problem ist das auslesen in einer Schleife.
Der wert steht drin in SOURCEDIR1, der rest läuft dann problem los

FOR %%I in (%SOURCEDIR1%,verz1,verz2,verz3 ) do xcopy %SOURCE%\%%I\*.* %TARGET%\%XX%\%%I\*.* /S/E/Y >> %LOG%
Snowman25
Snowman25 07.12.2009 um 16:44:42 Uhr
Goto Top
wenn du uns jetzt noch sagen könntest, WIE du SOURCEDIR1 ausliest und was du danach noch so damit anstellst, wären wir dir alle sehr dankbar....
60730
60730 07.12.2009 um 16:50:06 Uhr
Goto Top
@Snowman,

der Grußlose ist merkbefreit... und quotation marks kennt er auch nicht...
Snowman25
Snowman25 07.12.2009 um 16:56:01 Uhr
Goto Top
Zitat von @60730:
@Snowman,

der Grußlose ist merkbefreit... und quotation marks kennt er auch nicht...

scheint leider so...
so langsam finde ich, man sollte die domain 'benutzer.de'-Domain abschaffen... dann würden hier wohl auch weniger sinnbefreite rumrennen

Gruß
Snow
messebe
messebe 07.12.2009 um 17:03:50 Uhr
Goto Top
Dann schafft auch gleich den Administrator.de mit ab
Biber
Biber 07.12.2009 um 17:05:40 Uhr
Goto Top
Moin messebe,

was die beiden Jungs und Mädels dir durch die Blume zu sagen versuchen:
  • Du hast ein Skript-Problem bzw eine Zeile im Skript, die vom CMD-Interpreter anders verstanden wird als du es meinst.
  • der CMD-Interpreter hat uns gegenüber den Vorteil, dass er zumindest diese Zeile samt Kontext nachdenklich betrachten kann - wir können es nicht.
  • Oder, um vielleicht mal die zu einschränkende IT-Brille abzunehmen: Stell dir vor, du betreibst eine kleine Kfz-Werkstatt.
Eines Tages steht ein schwarzer Chevy vor deiner Werkstatttür mit einem Zettel unterm Scheibenwischer:
"Macht manchmal komische Geräusche. Bitte prüfen (erstmal nur Sichtkontrolle und Kostenvoranschlag). Danke im vorraus."

Wie würdest du vorgehen?

Grüße
Biber
60730
60730 07.12.2009 um 17:16:57 Uhr
Goto Top
@Biber:

was am 15.09.2006, um 21:28:29 Uhr noch klappte
Zitat von @messebe:
Hallo an die Runde,
war am am 26.09.2007, um 17:48:49 Uhr schon vergessen.
und ging am 06.02.2009, um 15:26:05 Uhr genauso weiter wie am 04.04.2009, um 16:14:00 Uhr oder am 23.06.2009.
Nur heute hat jemand (ich) es gewagt das mal anzusprechen.


btw: der schwatte chewie - macht 1024.67 € und hat ein r zuviel am Scheibenwischer.... face-wink
@messebe:
Überheblich?
oder doch besser stur?
wtf bedeutet denn eigentlich "quotation marks"

Gruß
messebe
messebe 07.12.2009 um 17:22:01 Uhr
Goto Top
Hallo Biber,
nett das DU dich meldest.
So, folgendes Problem, ich möchte mehrere Verzeichnisse sichern, und weil ich ein wenig faul bin, wollte ich das mit einer Schleife machen.
Habe das ganze einmal schon so gelöst :

SET XX=%monat%-%tag%-%jahr%
SET LOG=e:\Protokoll\%XX%-LOG.txt
SET SOURCE=d:\lexware\datenbank
SET TARGET=e:\lexware-Sicherung
FOR %%I in (F0,F1,F2,lxbackup ) do xcopy %SOURCE%\%%I\*.* %TARGET%\%XX%\%%I\*.* /S/E/Y >> %LOG%

Jetzt möchte ich ein paar andere Verzeichnisse sichern, darunter auch das Verzeichnis :
d:\dokumente und einstellungen\xxxxx\eigene Dateien

Also fülle ich die Variable mit :
SET SOURCEDIR1=dokumente und einstellungen\xxxxx\eigene Dateien
SET LOG=c:\%XX%-LOG.txt
SET SOURCE=d:
SET TARGET=%Stick%backup

Das steht dann auch richtig drin, wenn ich es mit Set oder echo %SOURCEDIR1% wieder auslesen.
Wird die For . . Schleife abgearbeitet, dann erhalte ich nur :
einstellungen\xxxxx\eigene und das ist zu wenig
Biber
Biber 07.12.2009 um 18:15:39 Uhr
Goto Top
Moin messebe,

ich will mal so sagen...
Wenn du Leerzeichen in einem Pfad/Dateinamen hast, dann musst du diesen in Anführungszeichen (neudeutsch: quotation marks) setzen.
Oder als Demo am CMD-Prompt (führendes ">" nicht mit eingeben, ist mein Prompt):
>set "Sourcedir1=%appdata%"  
>set "Sourcedir2="%appdata%""  
>set source
Sourcedir1=C:\Dokumente und Einstellungen\Biber\Anwendungsdaten
Sourcedir2="C:\Dokumente und Einstellungen\Biber\Anwendungsdaten"  

>for %i in (%sourcedir1%,%sourcedir2%) do @echo [%i]
[C:\Dokumente]
[und]
[Einstellungen\Biber\Anwendungsdaten]
["C:\Dokumente und Einstellungen\Biber\Anwendungsdaten"]  

Wird der Unterschied beim Abarbeiten der FOR-Anweisung durch die CMD.exe für dich deutlich?

Grüße
Biber
messebe
messebe 07.12.2009 um 18:49:27 Uhr
Goto Top
Hallo Biber,
wenn ich das richtig sehe, dann sagst du der Variabel ( Sourcedir2), das der nachfolgende Wert in Hochkammas steht und diese übernommen werden sollen.
Und wenn dann die Schleife abgearbeitet wird,dann wird "SOURCEDIR1 in seine Bestandteile zerlegen,die durch das Leerzeichen getrennt sind. SOURCEDIR2 übernimmt die Leerzeichen aber und stellt den Wert komplett dar.

Ich glaube der Groschen ist gefallen
Bernd
Biber
Biber 08.12.2009 um 07:35:02 Uhr
Goto Top
Moin Messebe,

noch sicherheitshalber ein Nachtrag. Obwohl ich ja eigentlich gar nicht nachtragend bin.

gestern hatte ich ja mit dem kleinen Beispiel am CMD-Prompt demonstriert, wie "Pfade mit Leerzeichen" im Stück, als ein Token, transportiert werden können.

Der Vollständkeit halber - es kann ja sein, dass du diesen token ohne umschließende Anführungszeichen brauchst.
Dann (in dem Beispiel von gestern) statt %i zusätzlich die Tilde verwenden (%~i):
>set "Sourcedir1=%appdata%"  
>set "Sourcedir2="%appdata%""  
>set source
Sourcedir1=C:\Dokumente und Einstellungen\Biber\Anwendungsdaten
Sourcedir2="C:\Dokumente und Einstellungen\Biber\Anwendungsdaten"  

>for %i in (%sourcedir1%,%sourcedir2%) do @echo [~%i]
[C:\Dokumente]
[und]
[Einstellungen\Biber\Anwendungsdaten]
[C:\Dokumente und Einstellungen\Biber\Anwendungsdaten]
im Batch jeweils zwei Prozentzeichen statt einem vor den Laufvariablen (%%i statt %i etc)

Grüße
Biber