dani
Goto Top

Batch - Keine Ausgabe

Guten Abend zusammen,

ich habe heute Mittag einen Batch entworfen. Dabei wird auf eine Datenbank zugegriffen! Wenn ich das SQL-Statment direkt über die Konsole absetze erscheint das richtige Ergebnis. Dann habe ich das Statment in eine FOR - Schleife eingebunden => keine Ausgabe mehr!

@echo off

FOR /f %%i IN ('mysql.exe -h s-hw01 -u root -test -D server --execute="select mac, computer from ris_mac_adressen where mac='%mac%';" -s') DO echo %%i  
Komisch....Schon im vorraus, vielen Dank für euere Mühen!


Gruß
Dani

Content-Key: 48692

Url: https://administrator.de/contentid/48692

Printed on: April 24, 2024 at 19:04 o'clock

Member: miniversum
miniversum Jan 13, 2007 at 10:34:38 (UTC)
Goto Top
Wie sieht das Statement auf der Konsole den aus?
Kommt keine Fehlermeldung?
Liegts vielelciht an den " in der Forschleife?

miniversum
Member: Dani
Dani Jan 13, 2007 at 10:44:18 (UTC)
Goto Top
G' Morgen,
manchmal habe ich das Gefühl ich rede gegen eine Wand! face-wink
Aber gut...

Wie sieht das Statement auf der Konsole den aus?
Naja...genau gleich, wie es in der FOR-Schleife steht.

Kommt keine Fehlermeldung?
Nein, es erscheint keine!

Liegts vielelciht an den " in der Forschleife?
Gut möglich, weiß leider nicht, wie man diese ersetzen könnte!


Gruß
Dani
Member: miniversum
miniversum Jan 13, 2007 at 10:49:31 (UTC)
Goto Top
Und was erhällst du als Ausgabe auf der Console nur durch das Statement ohne die For-Schleife?
Ist da vielelciht am Anfang eine Leerstalle in der Ausgabe?

Ne wenn garkeine Fehlermeldung leigt es dneke ich nicht an den ".

miniversum
Member: bastla
bastla Jan 13, 2007 at 11:38:08 (UTC)
Goto Top
Hallo Dani!

Vermutlich lilegt es nicht an den ", sondern an den ' ...

Vielleicht geht's ja so:
FOR /f %%i IN ('mysql.exe -h s-hw01 -u root -test -D server --execute="select mac, computer from ris_mac_adressen where mac=^'%mac%^';" -s') DO echo %%i  
Ansonsten bliebe natürlich noch der Workaround "Umleitung in eine temporäre Textdatei und zeilenweise Bearbeitung selbiger".

Grüße
bastla
Member: Dani
Dani Jan 13, 2007 at 11:46:35 (UTC)
Goto Top
Hi,
eigentlich wollte ich das mit der File überspringen!

Also folgender Fehler erscheint:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the ma
nual that corresponds to your MySQL server version for the right syntax to use n
ear '^' 00-17-42-0D-BE-6B^'' at line 1  

Dani
Member: miniversum
miniversum Jan 13, 2007 at 11:57:11 (UTC)
Goto Top
Funktioniert es den überhaubt wenn dus indirekt über eine Datei machst?

Gehts den so?:
FOR /f "delims=" %%i IN ('mysql.exe -h s-hw01 -u root -test -D server --execute="select mac, computer from ris_mac_adressen where mac='%mac%';" -s') DO echo %%i

miniversum
Member: Dani
Dani Jan 13, 2007 at 12:09:01 (UTC)
Goto Top
Hi,
ne...bringt nix. => Keine Ausgabe!


Gruß
Dani
Member: miniversum
miniversum Jan 13, 2007 at 12:12:52 (UTC)
Goto Top
Über ne Datei gehts?
Wen nicht was steht den in der Datei dann?
also so?:
mysql.exe -h s-hw01 -u root -test -D server --execute="select mac, computer from ris_mac_adressen where mac='%mac%';" -s>Datei.txt
FOR /f "delims=" %%i IN (Datei.txt) DO echo %%i

miniversum
Member: Dani
Dani Jan 13, 2007 at 12:41:55 (UTC)
Goto Top
Hi,
also lesen ist echt nicht deine Stärke!

Zitat:
Geschrieben von Dani am 13.01.2007 um 12:46:35 Uhr.
Hi,
eigentlich wollte ich das mit der File überspringen!

/Dani
Member: Dani
Dani Jan 13, 2007 at 12:49:56 (UTC)
Goto Top
Hi,
ein UPDATE:
Also der Batch funktioniert so, wie ich ihn gepostet habe. Anscheinend sind die MAC-Adressen in der DB (also die Buchstaben klein) und wenn ich Sie von "ipconfig /all" auslese sind die Buchstaben groß.
Gibt es in SQL eine Funktion, die die Buchstaben groß bzw. klein macht?


Gruß
Dani
Member: miniversum
miniversum Jan 13, 2007 at 12:53:09 (UTC)
Goto Top
Das bezog sich doch auf die Sache mit den ' und ^'.
Meine Frage war eine andere...
Hat sich ja inzwischen auch erledigt.

miniversum
Member: bastla
bastla Jan 13, 2007 at 16:27:22 (UTC)
Goto Top
Hallo Dani!

Vielleicht kann ich ja doch noch etwas Brauchbares beitragen: Für die Umwandlung in Kleinbuchstaben gibt es in SQL die Funktion LOWER(), analog für Großbuchstaben UPPER().

Einen Versuch wert sein könnte daher:
FOR /f %%i IN ('mysql.exe -h s-hw01 -u root -test -D server --execute="select mac, computer from ris_mac_adressen where mac=lower('%mac%');" -s') DO echo %%i  

Grüße
bastla
Member: Dani
Dani Jan 13, 2007 at 19:59:10 (UTC)
Goto Top
Hi,
wunderbar...gibt es auch eine Funktion um Leerzeichen am Anfang zu entfernen bzw. ignnorieren?!


Gruß
Dani
Member: bastla
bastla Jan 13, 2007 at 20:10:43 (UTC)
Goto Top
Hallo Dani!

Einen hab' ich noch für heute:
 ... where mac=trim(leading ' ' from lcase('%mac%')) ...  
Ansonsten: MySQL String Functions

Anmerkung: "lcase" statt "lower" ist vielleicht etwas gebräuchlicher, und synonym zu verwenden.

Grüße
bastla
Member: Dani
Dani Jan 13, 2007 at 21:55:07 (UTC)
Goto Top
Hi,
thx...so nun klappt es auch! Schönen Sonntag wünsch ich dir. face-wink


Gruß
Dani