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, 8988 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
Batch - .csv to .txt
gelöst Frage von freshman2017Batch & Shell11 Kommentare

Hallo Ihr, ich habe da nochmal eine leichte kurze Frage, vielleicht hat da jemand ein Code für mich. Folgende ...

Batch & Shell
Batch-Code in TXT auslagern
Frage von ElHuttiBatch & Shell10 Kommentare

Hallo, Ich möchte bei einem Batch-Mailprogramm, das man zum schreiben einer E-mail ändern muss, den Teil mit den Variablen ...

Batch & Shell
Batch mit for txt auslesen?
gelöst Frage von Mohji32Batch & Shell4 Kommentare

Hallo, ich habe mir den "Grundkurs" zu for schleifen im Board angeschaut aber leider nicht das hin bekommen was ...

Batch & Shell
Vorhandene TXT per Batch aktualisieren
gelöst Frage von 132749Batch & Shell6 Kommentare

Moin zusammen, ich benötige Eure Hilfe um den Inhalt einer vorhandenen TXT per Batch zu aktualisieren! So sieht meine ...

Neue Wissensbeiträge
Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 StundenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 3 TageniOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 3 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 6 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Heiß diskutierte Inhalte
Windows Server
Einziger Domänencontroller ersetzen - Windows Server 2012R2 - Hostname
Frage von DeRo93Windows Server26 Kommentare

Guten Tag, Leider haben wir einen Domänencontroller dessen Komponentenspeicher defekt ist. Alle Maßnahmen sind da leider fehlgeschlagen. Nun wurde ...

Server-Hardware
WS 2016 Essentials Hardware
Frage von ChefknechtServer-Hardware20 Kommentare

Moin welche Hardware würdet ihr empfehlen? Dell Poweredge HP Proliant Fujitsu Ich bin total konfus was nun nötig ist, ...

Windows Server
Welche Option fürs Windows Server Installations besser
Frage von backitWindows Server18 Kommentare

Hi Zusammen, ich werde unserer AD (SBS 2011) und Exchange 2010 Servern auf neuen physikalischen Server umziehen. ich habe ...

Windows Update
Fehler bei Updates über WSUS
Frage von Hendrik2586Windows Update11 Kommentare

Guten Tag liebe Kolleginen und Kollegen, lang lang ist meine letzte Anfrage her. Hier etwas das mich nun schon ...