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-ID: 48692

Url: https://administrator.de/forum/batch-keine-ausgabe-48692.html

Ausgedruckt am: 10.04.2025 um 00:04 Uhr

miniversum
miniversum 13.01.2007 um 11:34:38 Uhr
Goto Top
Wie sieht das Statement auf der Konsole den aus?
Kommt keine Fehlermeldung?
Liegts vielelciht an den " in der Forschleife?

miniversum
Dani
Dani 13.01.2007 um 11:44:18 Uhr
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
miniversum
miniversum 13.01.2007 um 11:49:31 Uhr
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
bastla
bastla 13.01.2007 um 12:38:08 Uhr
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
Dani
Dani 13.01.2007 um 12:46:35 Uhr
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
miniversum
miniversum 13.01.2007 um 12:57:11 Uhr
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
Dani
Dani 13.01.2007 um 13:09:01 Uhr
Goto Top
Hi,
ne...bringt nix. => Keine Ausgabe!


Gruß
Dani
miniversum
miniversum 13.01.2007 um 13:12:52 Uhr
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
Dani
Dani 13.01.2007 um 13:41:55 Uhr
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
Dani
Dani 13.01.2007 um 13:49:56 Uhr
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
miniversum
miniversum 13.01.2007 um 13:53:09 Uhr
Goto Top
Das bezog sich doch auf die Sache mit den ' und ^'.
Meine Frage war eine andere...
Hat sich ja inzwischen auch erledigt.

miniversum
bastla
bastla 13.01.2007 um 17:27:22 Uhr
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
Dani
Dani 13.01.2007 um 20:59:10 Uhr
Goto Top
Hi,
wunderbar...gibt es auch eine Funktion um Leerzeichen am Anfang zu entfernen bzw. ignnorieren?!


Gruß
Dani
bastla
bastla 13.01.2007 um 21:10:43 Uhr
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
Dani
Dani 13.01.2007 um 22:55:07 Uhr
Goto Top
Hi,
thx...so nun klappt es auch! Schönen Sonntag wünsch ich dir. face-wink


Gruß
Dani