arthuro
Goto Top

Per Batch in ein Textdokument schreiben

Guten Tag,

Ich habe eine Test1.bat
dort steht drine:

@echo off

@echo Bitte geben Sie den SourceNamen ein?
%test%

LogParser file:Query.sql -xsllink:Table.xsl
start Output.xml

PAUSE


Nun habe ich außerdem eine Query.sql die aufgerufen wird:

SELECT SourceName ,
Message,
COUNT(*) as Total
FROM System
TO Output.xml
WHERE EventTypeName='Error event'AND SourceName LIKE '%DCOM%' AND Message LIKE '%Fehler%'
GROUP BY SourceName, Message
ORDER by Total DESC


Ich möchte jetzt in der BatchDatei den SourceNamen eingeben: zb. "Auto". Dies soll dann in die Query.sql geschrieben werden und dort wo jetzt %DCOM% steht reingeschrieben werden! Weiß jemand wie das geht ? Und könnte mir behilflich sein dabei.

Dankeschön

Gruß Arthuro

Content-Key: 94405

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

Printed on: April 26, 2024 at 02:04 o'clock

Member: bastla
bastla Aug 14, 2008 at 09:21:12 (UTC)
Goto Top
Hallo Arthuro und willkommen im Forum!

Sofern es nicht schon genügt, eine Eingabe der Art
set /p "DCOM=Bitte geben Sie den SourceNamen ein: "  
zu verwenden, um der Variablen %DCOM% einen Wert (welcher dann in der Abfrage automatisch für %DCOM% eingesetzt wird) zuzuweisen, gäbe es folgende einfache Variante:
Erzeuge die Dateien "D:\SQL1.txt", Inhalt:
SELECT SourceName ,
Message,
COUNT(*) as Total
FROM System
TO Output.xml
und "D:\SQL2.txt" mit
GROUP BY SourceName, Message
ORDER by Total DESC
Daraus und aus der einen benötigten zusätzlichen Zeile lässt sich dann die "Query.sql" kombinieren:
@echo off & setlocal
set "SQL=D:\Query.sql"  
set /p "DCOM=Bitte geben Sie den SourceNamen ein: "  
> "%SQL%" type D:\SQL1.txt  
>>"%SQL%" echo WHERE EventTypeName='Error event'AND SourceName LIKE '%DCOM%' AND Message LIKE '%%Fehler%%'  
>>"%SQL%" type D:\SQL2.txt  
Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 10:22:10 (UTC)
Goto Top
Vielen Dank

Mit DCOM klappt das schon wunderbar, aber leider klappt das mit dem zweiten Wert nicht ? Warum ?



@echo off

set /p "DCOM=Bitte geben Sie den SourceNamen ein: "
set /p "Fehler=Bitte geben Sie den Message ein: "

LogParser file:Query.sql -xsllink:Table.xsl
start Output.xml

PAUSE

Member: bastla
bastla Aug 14, 2008 at 10:28:00 (UTC)
Goto Top
Hallo Arthuro!

Ich nehme an, Du beziehst Dich auf Variante 2 (das "Puzzle" ,-)) - Da Du nur DCOM erwähnt hattest, wird %Fehler% nicht "aufgelöst" (durch einen Variableninhalt ersetzt), sondern als "%Fehler%" in die neue Datei geschrieben. Du kannst das aber leicht ändern, indem Du anstelle der doppelten "%"-Zeichen in Zeile 5 (um "Fehler" herum) einfache machst ...

Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 10:31:28 (UTC)
Goto Top
Nein habe variante 1 Probiert, dort klappt es nur mit DCOM leider nicht mit Fehler und auch nicht mit %Fehler%.

Wenn ich jetzt Varainte 2 anwenden würde, wo müsste ich den das Fehler noch hinsetzen ? Hab das mit dem %SQL% da noch net ganz verstanden, wenn du mir das noch in den obigen Code reinmachen könntest, wäre das super.

Vielen Dank im voraus.

Gruß Arthuro
Member: Arthuro
Arthuro Aug 14, 2008 at 10:43:43 (UTC)
Goto Top
Bin jetzt ganz verwirrt,

in der Test1.bat steht das:
@echo off

set "SQL=D:\Query.sql"
set /p "DCOM=Bitte geben Sie den SourceNamen ein: "
set /p "Fehler=Bitte geben Sie den SourceNamen ein: "
"%SQL%" type D:\SQL1.txt
"%SQL%" echo WHERE EventTypeName='Error event'AND SourceName LIKE '%DCOM%' AND Message LIKE '%Fehler%'
"%SQL%" type D:\SQL2.txt

LogParser file:Query.sql -xsllink:Table.xsl
start Output.xml

PAUSE


SQL1.txt----------------------
SELECT SourceName ,
Message,
COUNT(*) as Total
FROM System
TO Output.xml

SQL2.txt-----------------------
GROUP BY SourceName, Message
ORDER by Total DESC

Query.sql---------------------
Was kommt den jetzt hier rein ?

Danke im Voraus.

Gruß Arthuro
Member: bastla
bastla Aug 14, 2008 at 10:45:46 (UTC)
Goto Top
Hallo Arthuro!

Eigentlich sehe ich keinen Grund, warum %Fehler% (wenn die Schreibweise in der "set"-Anweisung und in der "Query.sql", und so scheint es, exakt gleich ist) nicht ebenso wie %DCOM% übernommen wird ...
---
Variante 2 mit Übergabe von %Fehler%:
@echo off & setlocal
set "SQL=Query.sql"  

set /p "DCOM=Bitte geben Sie den SourceNamen ein: "  
set /p "Fehler=Bitte geben Sie den Message ein: "  

> "%SQL%" type SQL1.txt  
>>"%SQL%" echo WHERE EventTypeName='Error event'AND SourceName LIKE '%DCOM%' AND Message LIKE '%Fehler%'  
>>"%SQL%" type SQL2.txt  

LogParser file:%SQL% -xsllink:Table.xsl
start Output.xml

PAUSE
Da Du offensichtlich alle Dateien im aktuellen Verzeichnis hast (auch die SQL1.txt und SQL2.txt müssen dann da hin), können die Pfadangaben (in meinem Beispiel oben jeweils "D:\") entfallen.

Grüße
bastla

[Edit] Zu Deinem letzten Posting (hat sich überschnitten):
----------Query.sql---------------------
Was kommt den jetzt hier rein ?
Die "Query.sql" wird vom Batch erzeugt, allerdings mit Pfadangabe - ist aber hier oberhalb schon geändert. [/Edit]
Member: Arthuro
Arthuro Aug 14, 2008 at 10:57:20 (UTC)
Goto Top
Ich bekomme eine Fehler meldung wenn ich das wie oben mache:

http://img151.imageshack.us/img151/3392/testrb2.jpg
Member: bastla
bastla Aug 14, 2008 at 11:09:50 (UTC)
Goto Top
Hallo Arthuro!

Ändere einmal in der ersten Zeile das "echo off" auf "echo on" und sieh Dir den Ablauf an - damit lassen sich dann die Fehlermeldungen leichter zuordnen ...

Das Problem wird vermutlich sein, dass nicht alle Dateien im Ordner, von dem aus Du den Batch startest, liegen. Abhilfe könntest Du zB mit einem
cd /d "D:\Der Ordner mit allen Dateien"  
als Zeile 2 schaffen.

Wie sieht denn übrigens die "Query.sql" aus?

Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 11:34:59 (UTC)
Goto Top
Alle Dateien liegen in einem Ordner, hat alle schon seine richtigkeit:

http://www.imgbox.de/?img=i27096z70.jpg
Member: bastla
bastla Aug 14, 2008 at 12:11:48 (UTC)
Goto Top
Hallo Arthuro!

Alle Dateien liegen in einem Ordner
Leider nein - die "SQL1.txt" und "SQL2.txt" werden nicht gefunden, und deren Inhalte fehlen daher auch in der "Query.sql". Entweder legst Du diese Dateien ebenfalls in den entsprechenden Ordner ("C:\Programme\Log Parser 2.2"), oder Du verwendest eine Pfadangabe, zB
> "%SQL%" type "D:\Der Pfad zur\SQL1.txt"  
Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 12:15:44 (UTC)
Goto Top
Die Dateien liegen wirklich alle in einem Ordner, außerdem habe ich das jetzt mit dem Pfad gemacht, kommt trotzdem gleicher Fehler.

Er schreibt ja schließlich das was ich eingebe in die Query.sql, aber mehr passiert leider nicht face-sad
Member: bastla
bastla Aug 14, 2008 at 12:27:01 (UTC)
Goto Top
Hallo Arthuro!

Verwende bitte folgenden Batch:
@echo off & setlocal

set /p "DCOM=Bitte geben Sie den SourceNamen ein: "  
set /p "Fehler=Bitte geben Sie den Message ein: "  

@echo on
set "SQL=Query.sql"  

> "%SQL%" type SQL1.txt  
>>"%SQL%" echo WHERE EventTypeName='Error event'AND SourceName LIKE '%DCOM%' AND Message LIKE '%Fehler%'  
>>"%SQL%" type SQL2.txt  

LogParser file:%SQL% -xsllink:Table.xsl
start Output.xml

@echo off
echo #####################
dir
echo #####################
type "%SQL%"  
echo #####################
und starte ihn mit
Batchname.cmd >Batchlog.txt 2>&1
Die entstehende "Batchlog.txt" enthält dann alle Ausgaben und ein Inhaltsverzeichnis des aktuellen Ordners sowie den Inhalt der "Query.sql".

Soferne keine Datenschutzgründe dagegen sprechen, könntest Du den Inhalt der "Batchlog.txt" (bitte zwischen < code> und < /code>-Tags - jeweils ohne die Leerzeichen face-wink - stellen) posten.

Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 12:33:23 (UTC)
Goto Top
In der Batchlog steht nur " Bitte geben Sie den SourceNamen ein: "

Habe die Batch oben wie beschrieben genommen habe aber
Batchname.bat > Batchlog.txt 2>&1 
und nicht Batchname.cmd

Aber es funktioniert immer noch nicht
Member: bastla
bastla Aug 14, 2008 at 12:37:47 (UTC)
Goto Top
Hallo Arthuro!

Die beiden Eingaben musst Du "blind" machen ...

Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 12:40:25 (UTC)
Goto Top
Wie meinst du das Blind ? Bitte nochmal für einen Newbie erklären *G*
Member: bastla
bastla Aug 14, 2008 at 12:44:58 (UTC)
Goto Top
Hallo Arthuro!

Da die Bildschirmausgaben alle in die Logdatei geschrieben werden, kannst Du die Aufforderung zur Eingabe nicht sehen, sie ist aber da face-wink - daher:
Nach dem Starten des Batches die erste Eingabe (zB "DCOM") eintippen und mit der Eingabetaste abschließen, dann die zweite Eingabe ("Test") eintippen und ebenfalls mit der Eingabetaste abschließen.

Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 12:49:36 (UTC)
Goto Top
So einen fehler habe ich schon wegemacht mein fehler war das die SQL1.txt den Namen SQL1.txt hatte und nicht SQL1 weils schon eine txt ist.

Nun findet er die dateien auch, oh mann mich im arsch tritt.

Jetzt kommt aber nach der Zeile
LogParser file:Query.sql -xsllink:Table.xsl

Error: Syntax Error: extra token(s) after Query: 'EventTypeName= 'Error'

Der fehler liegt wohl in der Query:
TO Output.xmlWHERE EventTypeName='Error event'AND SourceName LIKE 'DCOM' AND Message LIKE ''

Output.xml wird mit der WHERE Anweisung zusammengeschrieben! Wie unterbinde ich das ?
Member: bastla
bastla Aug 14, 2008 at 12:54:45 (UTC)
Goto Top
Hallo Arthuro!

Es sieht so aus, als wäre vor "AND" in der "echo"-Zeile kein Leerzeichen ...

Output.xml wird mit der WHERE Anweisung zusammengeschrieben! Wie unterbinde ich das ?
Durch eine zusätzliche Zeilenschaltung am Ende der Datei "SQL1.txt" (in der Datei).

Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 12:58:15 (UTC)
Goto Top
Habe ich gemacht trotzdem gleicher fehler.

Gruß Arthuro
Member: Arthuro
Arthuro Aug 14, 2008 at 13:11:43 (UTC)
Goto Top
PS: Scheint jetzt zu gehen mit noch ein paar kleinen bugs, da muss ich mal schaun ich danke dir aber bis dahin.

Gruß Arthuro
Member: Arthuro
Arthuro Aug 14, 2008 at 13:17:21 (UTC)
Goto Top
So hab das jetzt soweit zum laufen gekriegt, er führt das ganze jetzt ohne Fehler aus nur am schluss kommt Output.xml konnte nicht gefunden werden in einem Fenster, das problem ist das aber das LogParser das erstellt also müsste es kommen weil das programm mach eigentlich was es machen soll, bloß es kommt immer diese Fehlermeldung ?

Weiß du vielleicht warum ? Muss ich irgendwas anders setzen ?

Ich könnte mir vorstellen das der fehler darin liegt das, die % Zeichen Fehlen bei der Where anweisung wenn der das in die Query schreibt ?!?

EDIT: Ist trotzdem nicht die lösung, habs so gemacht aber leider immer noch das gleiche irgendwie läuft er alle schritte durch aber erstellt keine Output.xml dies muss er aber machen um die dann anzuzeigen.
Member: bastla
bastla Aug 14, 2008 at 13:21:04 (UTC)
Goto Top
Hallo Arthuro!

Einmal mehr die Frage nach dem Pfad - wo liegt die "Output.xml"? Den kompletten Pfad kannst Du in der entsprechenden Zeile angeben, also etwa:
start "Ergebnis" "C:\Programme\Logparser 2.2\Output.xml"  
Grüße
bastla
Member: Arthuro
Arthuro Aug 14, 2008 at 13:35:23 (UTC)
Goto Top
Es lag hier dran: LogParser file:Query.sql -xsllink:Table.xsl

habe dort Query.sql reingemacht anstatt %SQL%

Jetzt läufts.

Gruß Arthuro

PS: Vielen Dank für deine Zeit und Mühe.