Jump to content

Umgebungsvariablen gesetzt aber leer?!


Gast Flipshot
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Gast Flipshot

Ich habe in einer Textdatei einen Servernamen und eine Freigabe drin stehen... "Server|Freigabe". Dazu habe ich folgendes kleine Batch-Script was diese Datei ausliest:

 

For /f "Tokens=1-2 Delims=|" %%i In (C:\Temp\Freigabe.txt") Do If "%%i" = "Server" Set Login=Ja

Set Login

Echo x%Login%x

Pause

 

In der Auflistung wird mir die Umgebungsvariable "Login" als gesetzt mit dem Wert "Yes" angezeigt, lasse ich sie jedoch mit "Echo" ausgeben, so erhalte ich lediglich "xx", dazwischen also nix.

 

Geb ich die Befehlszeilen direkt in der Kommandozeilenaufforderung ein, so funktioniert alles. Die Umgebungsvariable kann ich mir auch wieder ausgeben lassen.

 

Warum funktioniert das über mein Script nicht?!

Link zu diesem Kommentar

Hallo,

 

die Vergleichsoperation ist für mich Hauptverdächtig. Normal wird sie mit == oder EQU durchgeführt.

 

Ob das mit den Anführungszeichen in dieser Form so funktioniert, habe ich noch nicht getestet.

 

Das mit echo x%login%x angezeigt xx deutet darauf hin, die Variable %login% ist leer. Der Setbefehl wurde nicht ausgeführt.

 

Gruß

 

Edgar

Link zu diesem Kommentar

dieser syntaktische Fehler provoziert in cmd.exe keinen Fehler, sondern liefert lediglich für IF kein Ergebnis.

 

"%%i" wird nicht als Variable erkannt, sondern als Zeichenfolge "%%i" genau so wie sie da steht.

Der Vergleich "%%i"=="Server" läuft ins leere, da die Bedingung nicht erfüllt ist.

Der SET Befehl erkennt, dass die Variable LOGIN nicht gesetzt ist und verursacht einen Fehler im cmd-Interpreter der die Batch beendet.

 

ciao

Klaus

Link zu diesem Kommentar
Gast Flipshot

Sorry... trotz mehrmaligem Kontrollieren des Posts hatte ich Fehler übersehen. Manchmal ist ein einfaches Copy & Paste doch besser :-)

 

Das Anführungszeichen am Ende der Pfadangabe habe ich im Batch-Script natürlich nicht drin, ebenso wie ich den If-Vergleich mit "==" im Script richtig habe.

 

Es lag aber tatsächlich an den Anführungszeichen beim Vergleich. Kaum hatte ich diese entfernt hat das Ergebnis gestimmt.

Link zu diesem Kommentar

Nun schicke doch mal deinen Code!

 

Es gibt inm Editor extra eine Funktion für Code einfügen.

 

Wenn ich mir das bisherige so anschaue, hast du dich weder mit if /? beschäftigt und auch nicht in der Hilfe nachgeschaut.

 

Die Batchsprache funktioniert einwandfrei seit vielen Jahren, Probleme treten durch Fehler der Programmierer auf.

 

Ich weiss wovon ich Rede. :)

 

Gruß

 

Edgar

Link zu diesem Kommentar
For /f "Tokens=1-2 Delims=|" %%i In (C:\Temp\Freigabe.txt") Do If "%%i" = "Server" Set Login=Ja

Set Login

Echo x%Login%x

Pause

Wenn ich mir das so anschaue:

 

Was soll das Anführungszeichen vor der schliessenden Klammer? txt")

 

Was sollen die Anführungszeichen bei "%%i" ?

Was sollen die Anführungszeichen bei Was sollen die Anführungszeichen bei "Server"?

Wieso ist da nur ein Gleichheitszeichen in If "%%i" = "Server"

 

Die Operation wäre richtig so formuliert:

If %%i" ==Server"

oder so

If %%i equ Server

Link zu diesem Kommentar
Gast Flipshot

Also bitte schön... das ist mittlerweile mein etwas leicht abgeänderter Code:

 

For /f "Tokens=1-2 Delims=|" %%i In (C:\Temp\Freigabe.txt) Do If "1" == "1" (
If %%i == Server (
	Set Login1=Ja
) Else (
	Set Login1=Nein
)

Set L
Echo x%Login1%x
)

Pause

 

Als Ausgabe erhalte ich bei "Set L" unter anderem eine gesetzte Variable "Login1=Ja". Lediglich bei der Ausgabe mittels "Echo" erhalte ich "xx".

 

 

Dass ich im Ursprungspost zwei kleine Fehler (überflüssiges Anführungszeichen und fehlendes Gleichheitszeichen) übersehen hatte, hatte ich allerdings bereits erwähnt!

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...