Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

GELÖST

Den Inhalt einer Datei komplett als Variable

Mitglied: 77575

77575 (Level 1)

19.07.2013 um 19:17 Uhr, 2697 Aufrufe, 8 Kommentare

Hallo,
ich möchte den komppletten Inhalt einer Textdatei als Variable setzen.
mit set /p wird aber nur die erste Zeile verwendet.

Hintergrund ist das ich mit eventcreate einen Eventlog eintrag erzeugen möchte der im Beschreibungsfeld den gesamten Text der Datei enthält. Leider kann ich bei eventcreate keine Datei angeben sondern nur einen String.

.z. Bsp.
set /P TEXT=<c:\temp\test.txt

eventcreate /d "%TEXT%" /t information /id 111111

gruss 01
Mitglied: Endoro
19.07.2013 um 21:39 Uhr
Hallo,

für eventcreate lässt sich kein Dateizeiger übergeben.
Alles muss in eine Kommandozeile passen, die jedenfalls kürzer ist als die maximale Batch-String-Länge von 8191 Zeichen.

lg
Bitte warten ..
Mitglied: rubberman
19.07.2013 um 21:51 Uhr
Hallo 01-01-01,

mal abgesehen von Endoros Einwand wegen der Stringlänge - Ich habe noch nie eine mehrzeilige Eventbeschreibung gesehen. Natürlich wird eine zu lange Zeile in der Ereignisanzeige automatisch umgebrochen. Das hat aber nichts damit zu tun, dass dort Zeilenumbrüche im Text hinterlegt wären.
Ergo: Schreib die gesamte Beschreibung gleich in eine Zeile der Textdatei, dann kannst du sie auch vernünftig auslesen und von mir aus in eine Variable packen ...

Grüße
rubberman
Bitte warten ..
Mitglied: Herbrich19
20.07.2013 um 02:36 Uhr
Hallo,

Ansonsten kannst du noch mit VB.NET eine Console Anwendung erstellen die mit der Eventlog Klasse die Datei in eine Variable einließt und dann den String in Eventlog einträgt.

Du brauchst ein StreamReader (System.IO), und ein EventLog (ich glaube^^) (System.Diagnostic). Dann könntest du das Programm nach C:\Windows\System32 Kopieren und dann kannst du es wie ein normales CMD Syntax nutzen.

Und der Einwand mit den Zeilenumbrüchen, den habe ich auch schon gesehen, dieser ist aber earscheinlich ehr kulturell bedingt, weil es Technisch zumindest möglich ist (ich habe es mit einer VB.NET GUI getestet). Alerdings ist da bitte auch noch der umstand zu beachten das die WriteLogEntry Sub oder jede andere Parameter übergabe keine Zeilenumbrüche unsterstützt. Da muss man dann z.B. wie in meinen Fall mit vbNewLine Arbeiten. Aber möglich ist es.

LG, Herbrich
Bitte warten ..
Mitglied: rubberman
20.07.2013 um 12:14 Uhr
Hallo.

Möglich ist das auch mit Batch-Bordmitteln und dem EVENTCREATE Tool. Aber schön wird das nicht und fehleranfällig (insbesondere bei der von Endoro angesprochenen maximalen Stringlänge) wird das auch. Ich kann's ja mal vorturnen, letztlich aber immer noch davon abraten ...
01.
@echo off &setlocal 
02.
 
03.
REM Deine temporäre Datei. (anpassen) 
04.
set "file=test.txt" 
05.
 
06.
REM Aktuelle OEM Codepage zwischenspeichern. 
07.
for /f "tokens=2 delims=:" %%i in ('chcp') do set /a "oemcp = %%~ni" 
08.
 
09.
REM Codepage auf Windows-1252 stellen, um Umlaute korrekt übergeben zu können. 
10.
>nul chcp 1252 
11.
 
12.
REM Datei erstellen. Bei etwa 8100 Byte Dateigröße wäre übrigens Schluss mit lustig, da die Gesamtlänge der Kommandozeile sonst 8191 Zeichen überschreitet. 
13.
REM (Du verarbeitest natürlich deine bestehende Datei und schmeißt diesen Block raus! Nur für mich zum Testen ...) 
14.
>"%file%" ( 
15.
  echo \"Benutzerdefiniertes Ereignis\". 
16.
  echo( 
17.
  echo Mit 
18.
  echo Zeilenumbrüchen 
19.
  echo für 
20.
  echo Testzwecke! 
21.
22.
 
23.
REM Carriage Return 
24.
for /f %%i in ('copy /z "%~f0" nul') do set "cr=%%i" 
25.
REM Line Feed (Die zwei Leerzeilen danach sind relevant!) 
26.
set lf=^ 
27.
 
28.
 
29.
REM Verzögerte Variablenerweiterung, um den Text zusammen zu bauen und mit Zeilenumbrüchen arbeiten zu können. 
30.
setlocal EnableDelayedExpansion 
31.
 
32.
REM Datei einlesen und einen Windows-Zeilenumbruch (CrLf) hinter jede Zeile packen. 
33.
set "txt=" 
34.
<"!file!" ( 
35.
  for /f %%i in ('type "!file!"^|find /c /v ""') do for /l %%j in (1 1 %%i) do ( 
36.
    set "line=" &set /p "line=" 
37.
    set "txt=!txt!!line!!cr!!lf!" 
38.
39.
40.
 
41.
REM Dein Event erstellen. 
42.
eventcreate /t information /id 1000 /d "!txt:~0,-2!" 
43.
 
44.
REM Verzögerte Variablenerweiterung wird nicht weiter benötigt. 
45.
endlocal 
46.
 
47.
REM Zurück zur OEM Codepage. 
48.
>nul chcp %oemcp% 
49.
 
50.
REM Ggf. Datei löschen. 
51.
del "%file%" 
52.
 
53.
pause
Grüße
rubberman
Bitte warten ..
Mitglied: 77575
22.07.2013 um 18:14 Uhr
Hallo rubberman,

das funktioniert einwandfrei.
Vielen Dank.

gruss 01
Bitte warten ..
Mitglied: Computerseelsorger
10.09.2014 um 16:39 Uhr
Hi!

Das sieht sehr interessant aus!

Ist es auch möglich, dass das Script/Batch eine vorhandene "log.txt", um dies Beschreibungen darin in den Event zu schreiben?

Wenn ja: Wie müsste ich den Inhalt der der "log.txt" aussehen, das der mehrzeilige Inhalt auch im Event-Log mehrzeilig dargestellt wird?
Wo muss die Log-Datei liegen, bzw. wo gebe ich den Ablageort vor?


Beste Grüße,
CS
Bitte warten ..
Mitglied: rubberman
10.09.2014, aktualisiert um 18:56 Uhr
Hallo Computerseelsorger.

Ist es auch möglich, dass das Script/Batch eine vorhandene "log.txt", um dies Beschreibungen darin in den Event zu schreiben?
Ich hatte gehofft der Code wäre wirklich ausreichend gut kommentiert Siehe Zeile 13 oben.

Wie müsste ich den Inhalt der der "log.txt" aussehen
Keine Ahnung. Wie sieht er denn aus?

Wo muss die Log-Datei liegen, bzw. wo gebe ich den Ablageort vor?
Siehe Zeilen 3 und 4 oben.

Ergo: Alles erklärt. Lesen musst du allerdings selbst.

Nach wie vor gilt die Warnung vor Risiken und Nebenwirkungen ...

Grüße
rubberman
Bitte warten ..
Mitglied: Computerseelsorger
11.09.2014 um 08:19 Uhr
Super, danke!
Ja, richtig. Lesen muss man schon selber! Hat prima geklappt!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variablen Nutzen welche aus dem Inhalt von Variablen erstellt werden
gelöst Frage von der-blobBatch & Shell4 Kommentare

Hallo Zusammen, der Titel ist zwar nicht direkt aussage kräftig, aber jedoch weis ich nicht wie ich es beschreiben ...

Batch & Shell
For schleife mit variablem inhalt
gelöst Frage von Tealk144Batch & Shell5 Kommentare

Hallo zusammen, kann ich in einer Batch Datei folgendes schreiben? for Variable in Satz do ( if exist %buchstabe%: ...

Batch & Shell
Inhalte von FOR in Variable geht nicht !?
gelöst Frage von pbelclBatch & Shell9 Kommentare

Hallo Ihr Lieben, Ich habe eine Liste wo Dateien kopiert werden sollen, die so aufgebaut ist: ; Source-Pfad\, ,Zielpfad\, ,Dateiname oder ...

Batch & Shell
Variable auf Inhalt prüfen
gelöst Frage von PinkFLuffyUnicornBatch & Shell1 Kommentar

Hi, ich sitze jetzt schon den halben tag daran eine if schleife zu erstellen die mir sagt ob Variable ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 6 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 13 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 17 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...