Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Batch textdatei die - letzten letzte zeilen zeile - löschen

Frage Entwicklung Batch & Shell

Mitglied: -FRITZ-

-FRITZ- (Level 1) - Jetzt verbinden

06.12.2007, aktualisiert 01.01.2008, 27989 Aufrufe, 11 Kommentare

HALLO

ich hab schon viel gesucht
und einiges gefunden

aber bei mir ist es so das ich bein einer textdatei per batch nur die letzten zeilen löschen will
ab zeile 5 oder 7.
nur die letzten !!
oder bestimmte

wie wird das ausgeführt ?

1. ab zeile 5 alles löschen
2. eine bestimmte zeile löschen z.b zeile 7
_____

BTW:
kennt jemand eine gute seite (kostenlos) wo alle befehle batch/cmd (windows XP)
aufgeführt werden ?
aber wirklich alle und nicht nur die gängigen

auch z.b befehle wie
beispiel.exe c:\beispielvideo.avi
>>z.b vlc.exe c:\simpsonsvideo.avi ||womit das video mit vlc aufgerufen wird

und ähnliche "allgemeine" befehle

und vielleicht mit kurzer beschreibung und syntax
Mitglied: Biber
06.12.2007 um 20:36 Uhr
Moin -FRITZ-,

willkommen im Forum.
Mit Batch kannst Du nicht bestimmte Zeilen in einer Textdatei aufgrund der Zeilennummer löschen.
Eigentlich.

Dieses Vorgehen können nur Editoren (oder andere Programme) machen, die als Strategie implementiert haben "Hey, ich lade ein bestehende oder auch neu zu erstellende Datei KOMPLETT. Und egal, ob da vorher keine Zeilen drin waren und nach dem Editieren 50000 oder umgekehrt - ich schreibe die Datei komplett wieder neu."
So kann es NotePad oder Word, so können es Skriptsprachen wie VBSkript, wenn sie Funktionen wie (sinngemäß) ReadAll()/WriteAll und einen Buffer reservieren können, in den 50000 Zeilen reinpassen.

Batch kann das nicht. Damit kannst Du traurigerweise nur:
  • jeweils ZEILENweise eine Zeile lesen AUS einer Datei (Input) und im gleichen Schritt Output erzeugen (z.B. in eine andere Datei).

Ende der harten Wahrheit. Tut mir Leid.
So, jetzt Tränchen abtrocknen, machen wir das Beste draus..

Was Batch nicht kann, ist eigentlich unwichtig, schauen wir lieber die Möglichkeiten an.
Batch kann erfreulicherweise andererseits:
  • jeweils ZEILENweise eine Zeile lesen AUS einer Datei (Input) und im gleichen Schritt Output erzeugen (z.B. in eine andere Datei).

Und das reicht doch vollkommen.
Somit kannst Du mit folgendem Einzeiler ziemlich flexibel alle Deine Wünsche fast erfüllen:
01.
::---snipp ShowLines.bat Aufruf Showlines datei [LSS|EQU|GTR|NEQ...] lineNo  
02.
@for /f "delims=: tokens=1,*" %%i in ('findstr /n $ "%~1"') do @If %%i %2 %3  @echo %%j
Dieser Oneliner (der eigentlich nur ein etwas benutzerfreundlich gestaltetes CMD-Prompt-Kommando ist), der zeigt Dir bestimmte Zeilen, alle Zeilen außer.., alle Zeilen ab.. oder alle Zeilen bis Zeilennummer einer Textdatei.

Beispiel:
ShowLines test.txt EQU 7 ------> zeigt Zeile 7 der Textdatei test.txt.
ShowLines test.txt LSS 7 ------> zeigt Zeilen Kleiner 7 der Textdatei test.txt.
ShowLines test.txt GTR 7 ------> zeigt Zeilen größer 7 der Textdatei test.txt.
ShowLines test.txt NEQ 7 ------> zeigt Zeilen außer Zeile 7 der Textdatei test.txt.
....usw.

Mit diesem Mini-Batch kannst Du also, um auf Deine Wünsche zurückzukommen, alle Zeilen bis Zeile x oder alle Zeilen ab Zeile y oder alle Zeilen außer z aus einen INPUT (test.txt) auf den Bildschirm oder in einen anderen Output (z.B. Datei testneu.txt) schreiben.

Beispiel:
ShowLines test.txt LSS 7>testneu.txt
------> schreibt alle Zeilen kleiner Zeile 7 der Textdatei test.txt in eine neue Datei.

Für den Sonderfall, dass Du nicht absolute Zeilen "löschen" willst, sondern relative ("die letzten 5") musst Du erst mit "findstr /n $ test.tst" nachschauen, wieviele Zeilen denn in Deiner Datei sind.

Mehr geht nicht mit Batch. Bzw. ich habe es noch nicht herausgefunden.

Grüße
Biber
P.S. und wie man/frau mit Batch Simpson-Videos startet, das weiß ich auch nicht.
Bitte warten ..
Mitglied: bastla
06.12.2007 um 20:44 Uhr
Hallo -FRITZ- und willkommen im Forum!

Wenn's denn tatsächlich Batch (und nicht etwa VBS) sein soll, etwa so:
1. ab zeile 5 alles löschen
01.
@echo off & setlocal 
02.
set "InFile=Z:\Text.txt" 
03.
set "OutFile=Z:\Erg.txt" 
04.
set /a LineToDeleteFrom=5 
05.
 
06.
if exist "%OutFile%" del "%OutFile%" 
07.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%InFile%"') do if %%i lss %LineToDeleteFrom% if "%%j"=="" (echo.>>"%OutFile%") else echo %%j>>"%OutFile%"
2. eine bestimmte zeile löschen z.b zeile 7
01.
@echo off & setlocal 
02.
set "InFile=Z:\Text.txt" 
03.
set "OutFile=Z:\Erg.txt" 
04.
set LineToDelete=7 
05.
 
06.
if exist "%OutFile%" del "%OutFile%" 
07.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%InFile%"^|findstr /b "%LineToDelete%:"') do findstr /v /b /c:"%%j" "%InFile%">>"%OutFile%"
In beiden Fällen dient "findstr /n $" dem Suchen aller Zeilen (die ein Zeilenende haben ), um diese nummeriert weitergeben zu können.

Im ersten Fall wird die Nummer als Entscheidungskriterium, ob die jeweilige Zeile noch auszugeben ist, verwendet. Falls ja (da Zeilennummer in %%i < %LineToDeleteFrom%) muss noch untersucht werden, ob es sich um eine Leerzeile handelt (um ggf mit "echo." wieder eine solche zu erzeugen).

Im zweiten Fall wird anhand der Zeilennummer der Inhalt der zu löschenden Zeile (= %%j) gesucht und mit "findstr /v" diese Zeile herausgefiltert (= alle übrigen werden ausgegeben).

Grüße
bastla

[Edit] @Biber - Na ja, mit eleganten Onelinern kann man/frau leicht schnell sein ... Außerdem musste ich noch eine Kirche um's Kreuz befördern. [/Edit]
Bitte warten ..
Mitglied: Biber
06.12.2007 um 21:02 Uhr
@bastla
Was schreibst Du denn da alles? Heb Dir noch ein paar Zeilen auf für den Wunschzettel...

Er hat doch nur gefragt, ob wir gute Seiten lau für dau kennen, nicht ob wir mal eben welche hinschrubbeln können vor dem Abendessen..

Grüße
Biber
Bitte warten ..
Mitglied: -FRITZ-
08.12.2007 um 22:51 Uhr
*sorry für die verspätete rückmeldung

wieso gibts hier kein BBCode

also erstmal DANKE

sind beides nützliche lösungen

@bastla

O.K das beispiel hab ich so grob verstanden //syntax/ablauf
funktioniert auch >> ohne probleme

und ist für diesen fall praktisch gesehen die bessere alternative
dazu bei biber mehr

und alles sehr praktisch erklärt >> DANKE

@biber

O.K das beispiel funktioniert auch

also showlines.bat erstellt und
dann entweder EQU 7, LSS 7, GTR 7, NEQ 7,

das unpraktische ist nur, das dieser oneliner(selbst) mit in die original .bat (batch) miteingebaut
werden müsste, da es ein batch ist welches sich ein benutzer herunterlädt
und ausführt >> alles ohne konkrete verzeichnisangaben
alles wird am "verwendeten ort" (verzeichnis) gespeichert

so richtig verstanden hab ich das beispiel noch nicht //ablauf/syntax
muss mich da noch ein bißchen reindenken

BTW: für was sind eigentlich diese "befehle" (/ for -optionen ?) equ, lss, gtr, neq

BTW2: ein video starten mit einer .bat (batch) funktioniert z.b so
wenn z.b der vlc media player im verzeichnis C:\vlc installiert ist //die vlc.exe

dann das video starten mit
01.
c:\vlc\vlc.exe c:\simpsons\simpsonsvideo.avi
funktioniert auch mit anderen orten (streams z.b)

01.
c:\vlc\vlc.exe http://stream.de/streamvideo.asx
PS:
Er hat doch nur gefragt, ob wir gute Seiten
lau für dau kennen,
nicht ob wir mal eben welche hinschrubbeln
können vor dem
Abendessen..

schnell hingeschrubbelt wär für mich auch O.K

>>
vielleicht hat aber auch jemand ein paar (sites) empfehlungen
Bitte warten ..
Mitglied: Biber
09.12.2007 um 11:50 Uhr
Moin -FRITZ-,

mein Einzeiler sollte auch kein fertiges produktiv einsetzbares Skript sein, sondern nur das grundsätzliche Wesen des Arbeitens mit den CMD-Befehlen aufzeigen.
Und dort ist es eben so, dass Du eben nicht so mächtige "Bausteine" wie eine Funktion "Zeige mir ein explorerähnliches Auswahlfenster zum Wählen der Zieldatei" als kombinierbare Objekte zur Verfügung hast, sondern Dir schon eine Ebene tiefer erst mal ein paar wiederverwendbare Minimodule basteln musst.

Und gerade das (nicht abgesprochene) Zusammenspiel mit bastlas gepostetem Kommentar zeigt dann die möglichen Strategien:
  • entweder kommt eine kurze Lösung raus für einen genau abgegrenzten Spezialfall
  • oder es kommen eben nur ein paar etwas flexiblere wiederverwendbare Puzzlesteine raus, aus denen es sich vielleicht schneller zusammenkombinieren lässt - aber es ist nicht fertig.

Die Vergleichoperatoren EQU, LSS, GTR,... sind in der Hilfe zu IF ("IF /?" am CMD-Prompt) beschrieben.

Links zu ein paar Seiten, die Batch/CMD-Feinheiten diskutieren findest Du unter "Links" im Bereich "Batch & Shell". Mehr Tipps dazu haben wir hier im Forum wahrscheinlich nicht, da wir hier eigentlich auch nur gelegentlich ein paar Gebrauchsbätche quick & dirty zusammenschroten und das Ganze eher spielerisch denn zu Lehrzwecken betreiben.

Grüße
Biber
Bitte warten ..
Mitglied: -FRITZ-
09.12.2007 um 16:55 Uhr
nochmals DANKE

also beide lösungen sind für mich sehr hilfreich
praktisch und theoretisch (zur verständnis)

um die hilfe zu FOR /? SET /? IF /? hab ich erstmal(kurzfristig) einen bogen gemacht
________________________________________________________

  • den oneliner zu integrieren funktioniert auch //aber

z.b einfach in die erste zeile der original batch (die sich ein benutzer runterlädt)
ein
01.
echo "//oneliner zeile//" >showlines.bat 
einfügen funktioniert nicht // %% usw. gehen verloren
zur info

deshalb muss der oneliner als kommentar eingefügt werden und dann ausgelesen werden

01.
::@for /f "delims=: tokens=1,*" %%i in ('findstr /n $ "%~1"') do @If %%i %2 %3  @echo %%j  
02.
 
03.
set "InFile=original.bat" 
04.
set "OutFile=showlines.bat" 
05.
set /a LineToDeleteFrom=2 
06.
 
07.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%InFile%"') do if %%i lss %LineToDeleteFrom% if "%%j"=="" (echo.>>"%OutFile%") else echo %%j>>"%OutFile%"
dadurch wird dann die showlines.bat erzeugt mit "oneliner" inhalt
und kann danach von der original.bat aus "angesprochen" werden

am schluss können dann zur "bereinigung" alle nicht mehr benötigten erzeugten dateien gelöscht
werden >>
wenn das schnell genug geht bekommt der benutzer das eigentlich sowieso nicht mit
Bitte warten ..
Mitglied: Xalimeo
01.01.2008 um 19:20 Uhr
[quote]BTW:
kennt jemand eine gute seite (kostenlos) wo alle befehle batch/cmd (windows XP)
aufgeführt werden ?
aber wirklich alle und nicht nur die gängigen

auch z.b befehle wie
beispiel.exe c:\beispielvideo.avi
>>z.b vlc.exe c:\simpsonsvideo.avi ||womit das video mit vlc aufgerufen wird

und ähnliche "allgemeine" befehle

und vielleicht mit kurzer beschreibung und syntax[/quote]

Also ich lese im Normalfall eigentlich immer die Hilfedatei des jeweiligen Programms (Oft unter Stichwort "Aufruf", "CMD", "Commandline" oder ähnlich im Index der Hilfe zu finden). Dort sind dann auch meistens die jeweiligen CMD-Befehle, etc des Programms beschrieben (wenn sie existieren).
Ansonsten hilft meist auch "Google->[Name des Programms] commandline->Suchen" gut weiter.

Ich bezweifle, dass es eine einzige Seite gibt, die sich mit der ganzen Masse an Programmen beschäftigt und für jedes einzelne Program die CMD-Befehle dokumentiert hat, da es wie schon gesagt sehr viel einfacher ist, einfach mal die Hilfe-Datei zu lesen.
Bitte warten ..
Mitglied: Alme123
02.05.2012 um 18:14 Uhr
hallo Xalimeo,

schon lange her dein Beitrag, aber ich habe eine Seite gefunden!

Sogar vom Hersteller selbst: http://technet.microsoft.com/de-de/library/cc778084%28v=ws.10%29.aspx

Ich hoffe, dass ist das richtige!

Alme123
Bitte warten ..
Mitglied: 106009
02.05.2012 um 18:26 Uhr
Herr, lass Hirn regnen. Und bitte, bitte sorge dafür, dass Alme123 wenigstens diesmal was davon abbekommt!
Bitte warten ..
Mitglied: Alme123
02.05.2012 um 18:47 Uhr
...

Was ist an dem Link auszusetzen?
Bitte warten ..
Mitglied: Biber
02.05.2012 um 19:01 Uhr
Moin Alme123,


Zitat von Alme123:
...

Was ist an dem Link auszusetzen?
Ich sach mal so...

....in anderen Lebensbereichen -z.B. in Scheidungsprozessen - könnte ein solcher Dialog
"Kannst du mir mal das Salz reichen, Schatz?"
"Gerne, Liebling"
.... fatale Konsequenzen haben, wenn er sich uber fünf Jahre hinzieht.

Zum anderen ist diese Webseite in einer stilisierten, aber erkennbaren Version auch Offline verfügbar auf vielen Windows-Rechnern.

Aber ist auch egal - ihr braucht das Thema bitte hier nicht vertiefen.

Fragt mich einfach per PN, wenn irgendetwas unklar sein sollte.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...