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 Batchdatei soll immer nur die neuste zeile aus einer .txt auslesen und anzeigen

Mitglied: Feardotcom

Feardotcom (Level 1) - Jetzt verbinden

14.10.2008, aktualisiert 16.10.2008, 4173 Aufrufe, 11 Kommentare

Hallo,
vorab wollte ich nur kurz erwähnen, dass ich relativ unerfahren bin und mich bei allen helfenden oder verbessernden Beitragsverfassern bedanken möchte =)

Nun zu meinem Problem:
Ich versuche ein Chat zu entwickeln,welcher aus 3 Teilen besteht:
-1 und 2, sind die beiden Eingabefenster :
@echo off
set /p username=Username:
echo Type "username" to choose a new username.
echo.
:A
set /p Eingabe=Eingabe (%username%) :
if "%Eingabe%"=="username" Goto B
echo %username%: %Eingabe% >> hi.txt
goto A

-die aus 1 & 2 verfassten und in die textdatei umgeleiteten Kommentare sollen im Fenster 3 aufgelistet werden, und dort liegt mein Problem. Der Text sieht so aus:
@echo off
cls
echo. > hi.txt
:A
cls
more hi.txt
ping localhost -n 2 > nul
goto A

.... allerdings geht er die schleife immer wieder ab und ruft den Text aus der .txt immer wieder auf, was zum Flackern fürht.
Ich würde gerne wissen, wie man Fenster 3 programmiert, dass es nur die neuste zeile der .txt ausliest und dem Fenster 3 unten anfügt.

Herzlichen Dank
Fear
Mitglied: miniversum
14.10.2008 um 13:11 Uhr
Die Letzte Zeile bekommst Du hinindem du it einer For-Schleife jede Zeile einliest udn in der gleichen Variabeln immer wieder speicherst. Dannach stehtin dieser Variabeln die letzte Zeile:
01.
FOR /F "delims=" %%i in (hi.txt) do set zeile=%%i 
02.
echo %zeile%
Du solltest allerdinge vorher immer noch abfragen ob die Datei sich überhaubt verändert hat, sonst würde ja imemr wieder die letzte zeile ausgegeben werden, auch wen keiner was schreibt. Also wäre es noch sinvoll z.B. das letzte-Änderungs-Datum der Datei zu merken und zu kontrollieren oder mit dem Archivbit oder einer Flagdatei zu arbeiten.
Bitte warten ..
Mitglied: Feardotcom
14.10.2008 um 14:28 Uhr
Wie sähe das dann ca. mit deinem zusätzlichen Tip aus?Kannst du ein beispiel geben?
Ich bin jetzt soweit :

01.
@echo off 
02.
cls  
03.
FOR /F "delims=" %%i in (hi.txt) do set zeile=%%i  
04.
echo %zeile%
wenn das allerdings so aussieht, ruft der das einmal auf und beendet das doch gleich wieder?
Bitte warten ..
Mitglied: miniversum
14.10.2008 um 20:05 Uhr
Ja das war auch nur das eigentliche Auslesen der letzten Zeile ansich.
Ich erklärs mal anhand einer Flag-Datei weil das recht einfach ist (die anderen Möglichkeiten sind aber auch nicht sooo dramatisch zu realisieren):
Zunächst müßtest du die Batches 1 & 2 die die Eingabe in die hi.txt machen erweitern.
Nach der Zeile:
01.
echo %username%: %Eingabe% >> hi.txt
kommt noch diese Zeile dazu:
01.
echo flag>flag
So wird nach jeder Eingabe die Datei Flag erzeugt.
Die Batch für das dritte Fenster würde dan immer in Schleide laufen und überprüfen ob die Flagdatei existiert. Wenn ja wird sie gelöscht und die letzte Zeile der hi.txt ausgegeben.
Da wäre dann so:
01.
@echo off 
02.
cls 
03.
:loop 
04.
if exist flag ( 
05.
FOR /F "delims=" %%i in (hi.txt) do set zeile=%%i 
06.
echo %zeile% 
07.
08.
goto:loop
Bitte warten ..
Mitglied: Feardotcom
15.10.2008 um 15:52 Uhr
huhu
Danke für den Vorschlag =) , aber wenn man die erste Eingabe und somit diese flag datei das erste mal erstellt, ist sie doch durchgehend da und er macht sozusagen ne schleife, so dass er dauerhaft die erste Eingabe anzeigt ....
Bitte warten ..
Mitglied: bastla
15.10.2008 um 18:37 Uhr
Hallo Feardotcom!

... flag datei das erste mal erstellt, ist sie doch durchgehend da ...
Nicht, wenn Du noch als Zeile 7 einfügst:
01.
del flag
Grüße
bastla
Bitte warten ..
Mitglied: miniversum
15.10.2008 um 18:58 Uhr
Ups ja das war auch so gedacht. hatte ich vergessen zu coden. in der erklärung des Ablaufs ists ja erwähnt.
Bitte warten ..
Mitglied: Feardotcom
16.10.2008 um 00:12 Uhr
Hey ihr beiden und Danke für die Antworten, jedoch passt etwas nich mit
01.
FOR /F "delims=" %%i in (hi.txt) do set zeile=%%i  
02.
echo %zeile% 
[...] denn er gibt immer die zeile aus die ich zuvor geschrieben hab: z.B.
XYZ : hi .... <- wenn ich das eingebe erscheint "ECHO ist
ausgeschaltet (OFF).
XYZ : hi 2 .... <- wenn ich das eingebe erscheint "hi" :-P

könnt ja mal sofern ich noch einen Nerv dafür habt eben die 2 .txt erstellen und nachgucken =D

MFG Fear
Bitte warten ..
Mitglied: bastla
16.10.2008 um 00:22 Uhr
Hallo Feardotcom!

Die Reihenfolge
01.
echo %username%: %Eingabe% >> hi.txt 
02.
echo flag>flag
hast Du so eingehalten?

Gegen die Ausgabe "ECHO ist ausgeschaltet (OFF)." hilft übrigens
01.
echo\%zeile%
Grüße
bastla
Bitte warten ..
Mitglied: Feardotcom
16.10.2008 um 12:17 Uhr
Huhu Bastla!
Jap ich hab die Reihenfolge eingehalten.
Hier mal die 2 codes:
Einmal die Eingabe:
01.
@echo off 
02.
:B  
03.
set /p username=Username: 
04.
echo Type "username" to choose a new username. 
05.
echo. 
06.
:A 
07.
set /p Eingabe=Eingabe (%username%) : 
08.
if "%Eingabe%"=="username" Goto B 
09.
echo %username%: %Eingabe% >> hi.txt 
10.
echo flag > flag 
11.
goto A
[...] und die Ausgabe:
01.
@echo off 
02.
cls  
03.
echo. > hi.txt 
04.
:A 
05.
if exist flag ( 
06.
FOR /F "delims=" %%i in (hi.txt) do set zeile=%%i  
07.
echo\%zeile% 
08.
del flag 
09.
10.
Goto A
sieht das richtig aus ? theoretisch sollte es klappen aber wie gesagt er nimmt nich die letzte sondern die die ich davor getippt hab.

Gruß Fear
Bitte warten ..
Mitglied: bastla
16.10.2008 um 17:24 Uhr
Hallo Feardotcom!

Versuch es mit der folgenden Ausgabe:
01.
@echo off & setlocal 
02.
cls  
03.
echo. > hi.txt 
04.
:A 
05.
if not exist flag goto :A 
06.
set zeile= 
07.
FOR /F "delims=" %%i in (hi.txt) do set "zeile=%%i" 
08.
echo\%zeile% 
09.
del flag 
10.
goto :A
Der Hauptunterschied besteht darin, dass %zeile% jetzt nicht mehr im "if"-Konstrukt ausgelesen wird und dadurch sofort zur Verfügung steht. In der vorigen Variante wurde der Wert von %zeile% bereits am Beginn des "if"-Teiles ermittelt (da "delayedexpansion" nicht "eingeschaltet" war), sodass zwar der neue Wert von %zeile% richtig aus der Datei gelesen, aber erst beim nächsten "if" auch als Variableninhalt erkannt wurde.

Die Alternative, nämlich
01.
@echo off & setlocal enabledelayedexpansion 
02.
cls  
03.
echo. > hi.txt 
04.
:A 
05.
if exist flag ( 
06.
    FOR /F "delims=" %%i in (hi.txt) do set zeile=%%i  
07.
    echo\!zeile! 
08.
    del flag 
09.
10.
Goto A
hätte den Nachteil, dass ein "!" verschluckt, bzw bei zwei vorkommenden "!" innerhalb einer Zeile auch der Teil dazwischen (da dann als Variablenname interpretiert) nicht ausgegeben würde.

Grüße
bastla

P.S.: Die Variable %username% wird vom System gesetzt und sollte durch Deinen "Eingabe"-Batch besser nicht überschrieben werden, daher zB %UsrName% verwenden ...
Bitte warten ..
Mitglied: Feardotcom
16.10.2008 um 21:08 Uhr
Hallo Bastla und Miniversum!
Es klappt ! =D herzlichen Dank ... ihr habt es zur Vollendung gebracht endlich ist der Infounterricht nicht mehr so langweilig !!!
Denn der Admin hat net send deaktiviert
Allerdings macht er bei leerer Eingabe verständlicherweise die zeile davor, weil ja nix in die .txt geschrieben wird, wie lautet also der befehl dafür, dass er bei leerer Eingabe auch ne leere Zeile in die .txt schreibt?

01.
if "%Eingabe%"=="" echo. >> hi.txt
[...] das will nich gehn =D

MFG Fear
Bitte warten ..
Ähnliche Inhalte
Entwicklung

Bestimmte zeile aus txt datei auslesen und sich aus zeile 100 einen wert anzeigen lassen ?

gelöst Frage von bob777Entwicklung12 Kommentare

Hallo Suche einen Weg sich aus einer .config (txt) datei einen Wert Spielzeit auszulesen und anzuzeigen? Kann das irgendwer ...

Microsoft Office

Excel Zeilen in eine Zeile anzeigen

gelöst Frage von rw72Microsoft Office2 Kommentare

Hallo, ich habe eine Excel Tabelle mit dem Aufbau Nummer Text 0000001 Test2 0000001 Test1 0000002 Titel 0000002 Titel2 ...

PHP

TXT Datei auslesen und bestimmte Zeilen in Variable setzen

gelöst Frage von 126594PHP11 Kommentare

Hallo zusammen, vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht. Ich will aus einer ...

Batch & Shell

Einzelne Zeilen in txt Datei speichern und auslesen

gelöst Frage von noah1400Batch & Shell7 Kommentare

Liebe Forum-Mitglieder Ich habe da so eine Frage: Ich bin gerade dabei ein PW abfrage mit Batch zu machen. ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 5 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 11 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 15 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...