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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94405
Url: https://administrator.de/contentid/94405
Ausgedruckt am: 26.11.2024 um 00:11 Uhr
23 Kommentare
Neuester Kommentar
Hallo Arthuro und willkommen im Forum!
Sofern es nicht schon genügt, eine Eingabe der Art
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:
und "D:\SQL2.txt" mit
Daraus und aus der einen benötigten zusätzlichen Zeile lässt sich dann die "Query.sql" kombinieren:
Grüße
bastla
Sofern es nicht schon genügt, eine Eingabe der Art
set /p "DCOM=Bitte geben Sie den SourceNamen ein: "
Erzeuge die Dateien "D:\SQL1.txt", Inhalt:
SELECT SourceName ,
Message,
COUNT(*) as Total
FROM System
TO Output.xml
GROUP BY SourceName, Message
ORDER by Total DESC
@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
bastla
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
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
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%:
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):
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
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]Was kommt den jetzt hier rein ?
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
als Zeile 2 schaffen.
Wie sieht denn übrigens die "Query.sql" aus?
Grüße
bastla
Ä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"
Wie sieht denn übrigens die "Query.sql" aus?
Grüße
bastla
Hallo Arthuro!
Grüße
bastla
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"
bastla
Hallo Arthuro!
Verwende bitte folgenden Batch:
und starte ihn mit
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 - stellen) posten.
Grüße
bastla
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 #####################
Batchname.cmd >Batchlog.txt 2>&1
Soferne keine Datenschutzgründe dagegen sprechen, könntest Du den Inhalt der "Batchlog.txt" (bitte zwischen < code> und < /code>-Tags - jeweils ohne die Leerzeichen - stellen) posten.
Grüße
bastla
Hallo Arthuro!
Da die Bildschirmausgaben alle in die Logdatei geschrieben werden, kannst Du die Aufforderung zur Eingabe nicht sehen, sie ist aber da - 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
Da die Bildschirmausgaben alle in die Logdatei geschrieben werden, kannst Du die Aufforderung zur Eingabe nicht sehen, sie ist aber da - 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