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

gelöst Von Batch in txt schreiben lassen, aber letzte Zeile soll immer oben sein

Mitglied: franky11

franky11 (Level 1) - Jetzt verbinden

05.02.2008, aktualisiert 06.02.2008, 8949 Aufrufe, 9 Kommentare

Ich lasse per Batch in eine txt-Datei schreiben, nur leider ist die letzte Zeile immer am Ende vom Dokument und man muss erst runterscrollen. Gibt es die Möglichkeit das genau umgedreht in die txt-Datei zuschreiben das die letzte Zeile immer an erster Stelle steht.
Hoffentlich hab ich es nicht zu kompliziert erklärt.

Oder gibt es andere Lösungen dafür.

franky11
Mitglied: TuXHunt3R
05.02.2008 um 23:14 Uhr
Wird so leider nicht so einfach gehen. Hab soeben auch schnell bei der PowerShell nachgesehen, auch dort ist keine solche Funktion vorhanden.

Was ich mir vorstellen könnte, wäre eine 2. Batchdatei, welche du am Schluss der ersten Batchdatei aufrufst und die dir das Ganze sortiert. Allerdings halte ich das Ganze für ziemlich übertrieben. Auch kann ich dir kein Beispielscript nennen, da das meine Batch-Kenntnisse übersteigen würde. Vielleicht wissen Biber oder bastla etwas, schicke Ihnen doch mal eine PN mit dem Link zu diesem Beitrag hier.
Bitte warten ..
Mitglied: bastla
05.02.2008 um 23:44 Uhr
Hallo franky11 und willkommen im Forum!

Um den gewünschten Effekt schon beim Schreiben (ich gehe davon aus, dass die Datei neu erstellt wird) zu erzielen, wäre etwa folgende Strategie denkbar:
01.
@echo off & setlocal 
02.
set "Datei=D:\Datei.txt" 
03.
 
04.
if exist "%Datei%" del "%Datei%" 
05.
echo Erstellte Zeilen: 
06.
for /l %%i in (1,1,10) do call :ProcessLine "Zeile %%i" 
07.
del "%Datei%.bak" 
08.
echo. 
09.
echo Dateiinhalt: 
10.
type "%Datei%" 
11.
goto :eof 
12.
 
13.
:ProcessLine 
14.
echo %~1 
15.
if exist "%Datei%" move "%Datei%" "%Datei%.bak" 
16.
(echo %~1)>"%Datei%" 
17.
if exist "%Datei%.bak" type "%Datei%.bak">>"%Datei%"
Da Du leider Deinen Batch nicht genauer dargestellt hast, konnte ich auch nur ein derart allgemeines Beispiel anführen.

Grüße
bastla
Bitte warten ..
Mitglied: bastla
06.02.2008 um 00:04 Uhr
... als Alternative das von TuXHunt3R angesprochene nachträgliche "Sortieren" (unter Verwendung eines kleinen temporären VBScripts):
01.
@echo off & setlocal 
02.
set "Datei=Z:\Datei.txt" 
03.
 
04.
:: Dein Batch 
05.
:: 
06.
:: 
07.
 
08.
set "R=%temp%\ReverseLines.vbs" 
09.
echo Set fso=CreateObject("Scripting.FileSystemObject"):T=Split(fso.OpenTextFile("%Datei%",1).ReadAll,vbCrLF)>"%R%" 
10.
echo Set D=fso.OpenTextFile("%Datei%",2,True):For i=UBound(T) To 0 Step -1:D.WriteLine T(i):Next:D.Close>>"%R%" 
11.
cscript //nologo "%R%" 
12.
del "%R%"
Da die gesamte Textdatei vorweg eingelesen werden muss, ist diese Variante für Logfiles mit 500.000 Zeilen vielleicht nicht soo gut geeignet - aber da ich, wie schon erwähnt, nix Genaues über Deinen Batch / Deine Textdatei weiß ...

Grüße
bastla
Bitte warten ..
Mitglied: franky11
06.02.2008 um 18:53 Uhr
Hallo bastla,
ich weis PN hätte etwas ausfürlicher sein können. So nun zu meinem Problem.
Die Batch schreibt fortlaufend in eine bestehende Datei, wobei die Datei von oben nach unten geschrieben wird. Ich hätt es gern andersrum. Hier meine Batch:


@echo off
set mydate=%date:~-10,2%-%date:~-7,2%-%date:~-4%
set mytime=%time:~-11,2%-%time:~-8,2%-%time:~-5,2%
echo %mydate% %mytime% %1 %2 %3>>c:\Test\htdocs\Testdatei.txt


Hintergrund meines Anliegens ist, das die Datei übers Internet von mehreren Freunden angeschaut werden kann wobei das Aktuellste halt immer ganz oben stehen soll.
Bitte warten ..
Mitglied: bastla
06.02.2008 um 19:06 Uhr
Hallo franky11!

Das sollte dann etwa so gehen:
01.
@echo off & setlocal 
02.
set "Datei=c:\Test\htdocs\Testdatei.txt" 
03.
 
04.
set mydate=%date:~-10,2%-%date:~-7,2%-%date:~-4% 
05.
set mytime=%time:~-11,2%-%time:~-8,2%-%time:~-5,2% 
06.
 
07.
if exist "%Datei%" move "%Datei%" "%Datei%.bak" 
08.
echo %mydate% %mytime% %1 %2 %3 >"%Datei%" 
09.
if exist "%Datei%.bak" type "%Datei%.bak">>"%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: Biber
06.02.2008 um 20:24 Uhr
Moin franky11,

Randbemerkung:

es ist aber auch ein Stück weit hausgemachtes Leiden...
Wenn ich es richtig sehe, wird jeweils EINE Zeile neu geschrieben, die beginnt mit einem...
%date:~-10,2%-%date:~-7,2%-%date:~-4%
Oder auf Deutsch, mit einem...
06-02-2008

Wenn Du einfach das Datum in einem sortierbaren Format schreiben würdest, also..
2008-02-2008
...dann könntest du die ganze Datei mit einem einfachen "SORT /R c:\Test\htdocs\Testdatei.txt" absteigend anzeigen lassen.
Und ggf. noch vorher mit Findstr filtern auf "alles mit "2008" am Zeilenanfang" oder so.

Denn bastlas Workaround wäre auch die einzige Strategie, die mir einfallen würde, aber wenn Deine Textdatei ein paar 100000 Sätze enthält, wird diese Hin-und-Herkopiererei nicht sonderlich performant sein.

Die wesentliche Aussage in diesem Thread ist doch, dass es eigentlich nicht geht, an den Anfang einer Datei zu schreiben.

Also sollte man/frau den Rest des Vorhabens doch dieser Tatsache anpassen...

Grüße
Biber
Bitte warten ..
Mitglied: franky11
06.02.2008 um 20:37 Uhr
@bastla
Funktioniert einwandfrei. Voller Respekt. Ich will nicht Nerven aber könntest du mir die Zeilen einzeln erklären. Kenne da nicht alle Befehle und Zusammenhang.

if exist "%Datei%" move "%Datei%" "%Datei%.bak"
echo %mydate% %mytime% %1 %2 %3 >"%Datei%"
if exist "%Datei%.bak" type "%Datei%.bak">>"%Datei%"


Will die bak-Datei in ein anderes Verzeichnis haben.
Vielen Dank im vorraus.

franky11
@Biber
Hab gerade dein Komentar gelesen. Die Datei wird nur ca. 200 Zeilen lang dann lösch ich sie. Wegen Datum das muss so sein, in die Datei werden Alarmierungen geschrieben die müssen wegen der Übersicht so sein.
Bitte warten ..
Mitglied: bastla
06.02.2008 um 21:02 Uhr
Hallo franky11!

Zu den genannten Zeilen:

Vorweg eine zusätzliche Zeile, um den Wunsch nach einem anderen Speicherort der "%Datei%.bak" umzusetzen:
01.
set "Bak=%temp%\Bak.txt"
Den Namen dieser Datei leite ich nicht mehr vom ursprünglichen Dateinamen ab, Du kannst daher "Bak.txt" beliebig ändern. Wenn Du auch einen anderen Ordner als %temp% verwenden willst, sollte dieser aber (aus Performance-Gründen) auf dem gleichen Laufwerk liegen, da ansonsten ein zweimaliger Kopiervorgang nötig wird. [Edit] Diese Überlegung ist bei einem Umfang von 200 Zeilen dann wohl zu vernachlässigen ... [/Edit]

01.
if exist "%Datei%" move "%Datei%" "%Bak%"
Wenn die Textdatei bereits existiert, wird sie durch diese Zeile einfach umbenannt - "move" verwende ich aus Bequemlichkeitsgründen, da ich damit eine alte Version automatisch überschreiben kann. In der hier verwendeten Fassung bringt es den zusätzlichen Vorteil, dass auch ein anderer Ordner als Ziel verwendet werden kann. In "%Bak%" befindet sich also jetzt der bisherige Dateiinhalt.

01.
echo %mydate% %mytime% %1 %2 %3 >"%Datei%"
Durch die Ausgabe dieser Zeile wird die Textdatei im ursprünglichen Ordner neu erstellt - die geschriebene Zeile ist daher der erste Eintrag.

01.
if exist "%Bak%" type "%Bak%">>"%Datei%"
"type" gibt den Inhalt einer Datei aus. Durch die Umleitung mit ">>" in Deine mit der vorigen Zeile neu angelegte Datei wird der bisherige Dateiinhalt (wenn es schon einen gab - zur Sicherheit mit "if exist" geprüft) an die neue Datei angefügt.
@Biber
An sich gebe ich Dir hinsichtlich der Sortierung recht, aber auch dann muss ja eine Temporär-Datei erstellt werden, was hinsichtlich der Performance sogar nachteilig wäre, da bei der von mir verwendeten Methode eine zusätzliche Sortierung gar nicht nötig wird (die Reihenfolge des Eintrages entscheidet und wird auch nicht verändert) - oder übersehe ich noch etwas? [Edit] Offensichtlich hier nicht wichtig, trotzdem aber interessant ... [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: franky11
06.02.2008 um 21:14 Uhr
Das ist einfach Spitze mit euch. Habs nochmal genau durchgeschaut und gleich meinen Bedürfnissen angepasst.
Hier wird einem wirklich schnell geholfen.

franky11
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Letzte Zeile einer .txt in eine andere .txt ausschneiden per Batch

gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo zusammen, zu meinem obrigen Thema habe ich leider nur in Richtung löschen und nicht in Richtung ausschneiden etwas ...

Batch & Shell

Per Batch in ausgewählte oder vorgeschriebene Zeile einer .txt schreiben

gelöst Frage von pdiddoBatch & Shell6 Kommentare

Morgen Leute, vor lauter Bäumen sehe ich den Wald nicht mehr. Ich möchte, dass meine 1.bat in die erste ...

Batch & Shell

Kombinationen - Möglichkeiten in txt schreiben lassen!

Frage von freshman2017Batch & Shell8 Kommentare

Hallo Ihr, ich würde gerne bspw. aus 5 Möglichkeiten: A B C D E die verschiedenen Kombinationen, die sich ...

Batch & Shell

Mit Batch Zeilen aus TXT modifizieren

gelöst Frage von chef1568Batch & Shell4 Kommentare

Hallo zusammen, leider konnte ich mit den bisherigen Threads mein Problem bisher nicht lösen. Problemstellung: In einer Textdatei sind ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 6 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 6 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 10 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server39 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...