Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]13145[/thread]

Batch Programmierung

Leser: 10


<< >> 7 Einträge, 1 Seite
Alter
 2009-02-16 15:00
#118897 #118897
User since
2008-02-27
67 Artikel
BenutzerIn
[default_avatar]
Guten Tag,

ich hoffe das Thema ist hier richtig.
Also ich schreib eine Batchdatei welche mir Einträge in das Eventlog schreiben soll. Nun habe ich das Problem das ich mit "Eventcreat" dies sehr gut machen kann, aber wenn ich den Text (Message) eintragen lasse bricht er ab, weil sich in diesem Text Anführungszeichen befinden ich aber den Text in welche setzen muss. Hat da einer eine Idee wie man das umgehen kann?

Code: (dl )
1
2
"C:\Programme\Log Parser 2.2\LogParser.exe" "SELECT Message, SourceName INTO appevent.tsv FROM \\*****\application WHERE sourcename = 'eTrust ITM' AND ComputerName LIKE '*****'" -i:evt -o:tsv -fileMode:0 -icheckpoint:appevent.lpc
FOR /F "delims= " %%t IN (appevent.tsv) DO eventcreate /T ERROR /ID 200 /L Application /D "%%t"


Das Problem ist diese Anweisung
Code: (dl )
 /D "%%t" 

Vielen Dank

Gruß Alter
The only way to survive! Before and after the year 2000, 3000, 4000, ... and tomorrow, too! Linux forever
GwenDragon
 2009-02-16 15:40
#118904 #118904
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Du brauchst Anführungsstriche um %%t wegen des Programms oder der Batchdatei?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Alter
 2009-02-17 08:20
#118909 #118909
User since
2008-02-27
67 Artikel
BenutzerIn
[default_avatar]
Die Anführungszeichen verlangt der Befehl:
Code: (dl )
eventcreate
The only way to survive! Before and after the year 2000, 3000, 4000, ... and tomorrow, too! Linux forever
GwenDragon
 2009-02-17 17:33
#118931 #118931
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Du hast doch schon "%%t" geschrieben, da sind doch welche drumherum.

Meckert dann eventcreate bei bestimmten Daten oder immer?

Gib doch bitte mal an, wie die Daten vorliegen bzw. was "%%t" beinhaltet wenn eventcreate meckert.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

nepos
 2009-02-17 18:45
#118944 #118944
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das Problem dürfte das sein:
Code: (dl )
 "... %%t ... "

wird mit einem Text Das ist der "krasse" Text zu
Code: (dl )
 "... Das ist der "krasse" Text" ...


Problem ist hier wohl, dass die Anführungszeichen im Text escaped werden müssten...
GwenDragon
 2009-02-17 19:36
#118945 #118945
User since
2005-01-17
14542 Artikel
Admin1
[Homepage]
user image
Und ""%%t"" geht nicht?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Alter
 2009-02-18 12:30
#118954 #118954
User since
2008-02-27
67 Artikel
BenutzerIn
[default_avatar]
Richtig nepos das ist bzw war das Problem.
Ich habe es nun so gemacht das die " entfernt werden und somit alles als string erkannt wird und der Befehl ordentlich Ausgeführt wird.
Hier der Code zum entfernen der Anführungszeichen:

Code: (dl )
1
2
3
4
for /f "delims=" %%q in (appevent.tsv) do (
set "hochkomm=%%q"
echo !hochkomm:"=!
)

Und hier das komplette Skrip falls mal jemand das gleiche Problem hat:

aufruf.bat
Code: (dl )
1
2
3
4
5
6
7
8
9
10
@echo on
Set datei=appevent.tsv
"C:\Programme\Log Parser 2.2\LogParser.exe" "SELECT EventTypeName, SourceName, EventID, ComputerName, Message INTO appevent.tsv FROM \\*****\Application WHERE sourcename = 'eTrust ITM' AND ComputerName LIKE '*****'" -i:evt -o:tsv -fileMode:0 -icheckpoint:appevent.lpc
call hochkomm.bat>test.txt
copy "test.txt" "appevent.tsv"
FOR /F "tokens=1-4 usebackq delims= " %%a IN (%datei%) DO (
eventcreate /T %%a /SO %%b /ID %%c /L Application /D "%%d"
)
pause
del "test.txt"


hochkomm.bat
Code: (dl )
1
2
3
4
5
@echo off & setlocal EnableDelayedExpansion
for /f "delims=" %%q in (appevent.tsv) do (
set "hochkomm=%%q"
echo !hochkomm:"=!
)


Mit dem Tool Logparser wird das Eventlog gelesen und in eine Datei geschrieben. Zusätzlich wirde eine Checkpoint Datei erstellt damit beim nächsten Aufruf nicht wieder alle "alten" Daten Kopiert werden.
Aus dieser Datei werden dann die Anführungszeichen entfernt und in das event log des Lokalen Computers geschrieben.
Das Skript ist nur für die Auswertung von dem event log "Application" bzw "Anwendung".

ps: * = Informationen die ich aus Gründen des Datenschutzes rausgenommen habe

Natürlich üernehme ich keine Garantie für die Funktion und auftretende Fehler, wenn es doch mal jemand verwenden möchte.

Schönen Tag
Gruß Alter
The only way to survive! Before and after the year 2000, 3000, 4000, ... and tomorrow, too! Linux forever
<< >> 7 Einträge, 1 Seite



View all threads created 2009-02-16 15:00.