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

Die ersten und letzten 2 Zeilen einer Textdatei löschen

Frage Entwicklung Batch & Shell

Mitglied: dumbo

dumbo (Level 1) - Jetzt verbinden

01.12.2006, aktualisiert 02.12.2006, 7019 Aufrufe, 4 Kommentare

Es gibt hier ja Tipps in Hülle und Fülle, aber ich fürchte ich blicks nicht.
Wie kann man bitte die 2 ersten und letzten Zeilen einer Textdatei aus selbiger entfernen oder aber
beim erneuten einlesen diese Zeilen weglassen?

Mal ausführlicher:

cls
dir /-C > bla.txt && @for /F "eol= tokens=3,4 skip=7 delims= " %%i in (bla.txt) do @echo Name/Groesse: %%j / %%i >> sizes.txt

--
dir /-C listet den Verzeichnisinhalt(Dateigroesse ohne Punkte in Bytes) auf und schreibt die Ausgabe in die Datei bla.txt
Daraus bedient sich die for Schleufe und gibt mir nur Spalte 3 und 4 wieder (Dateiname und -größe -in Bytes) und gibt das in die Datei sizes.txt

Wenn ich mir die Datei nun anschaue, so enthält diese:
Name/Groesse: bla.txt / 0
Name/Groesse: size.bat / 255
Name/Groesse: INTERESSANTE_DATEI / 25798954
Name/Groesse: bytes / 255
Name/Groesse: bytes / 12513308672

Die Dateien, von denen ich exakt diese beiden Daten benötige lägen also in Zeile 3 sodass ich Zeile 1+2 und 3+4 nicht benötige.

Nur wie bekomme ich die wech?
Mitglied: AxelHahn
01.12.2006 um 17:47 Uhr
Hi,

warum diese Ausgabe in eine Datei und ein Dir-Kommando, was für deinen Fall unnütze Ausgaben mitliefert??

Auf Kommandozeile:
for /F %a in ('dir /b [Verzeichnis]') do echo %a %~za

... in einer Batch doppelte % verwenden

Viele Grüsse
-= Axel =-

Nachtrag:
Wenn Leerzeichen drin sind, braucht man noch tokens=*:
for /F "tokens=*" %a in ('dir /b [Verzeichnis]') do echo %a %~za
Bitte warten ..
Mitglied: Biber
01.12.2006 um 17:50 Uhr
Moin dumbo,

auch wenn ich es momentan nicht nachvollziehen kann, wieso es nun gerade die dritte der Dateien aus der DIR-Anzeige sein soll..
...machbar ist mit Batch ja alles.
[Sieht nur manchmal unappetitlich aus.]

Am CMD-Prompt:
01.
>for /F "tokens=3,*" %i in ('dir /-c ^|more +5^|findstr /n .^|findstr /r "^3:"') do @echo Name/Größe: %j/%i 
02.
Name/Größe PDF_ConverterPro_drucker.zip/6723
... wobei, von innen nach außen erklärt:
dir /-c ....die "übliche" DIR-Anzeige; Größenangaben ohne Tausenderpunkte
Da ist ein 5-Zeiliger Vorspann dabei ("Datenträger in Laufwerk X: heißt ..." usw)
Den filtere ich wech mit ^|more +5.
Den verbleibenden Rest numeriere ich durch mit findstr /n .
und will von den durchnumerierten Zeilen nur die Zeile haben, die mit "3:" anfängt. findstr "^3:"
Das alles geht INNEN ab und dampft die Ausgabe auf eine, die dritte Zeile und damit die dritte Datei zusammen.
Außen, also die Spaltenauswertung dieser Zeile bleibt alles (fast) gleich. Die Tokens 3,4 heißen bei mir 3,* wegen Dateien mit Leerzeichen.

Als Batch mit Parameter welcheZeile sähe das dann ungetestet so aus:

01.
:: ZeigMirDateiNumero.bat [Pflicht-Parameter1: Zeilennummer] 
02.
@for /F "tokens=3,*" %%i in ('dir /-c ^|more +5^|findstr /n .^|findstr /r "^%1:"') do @echo Name/Größe: %%j/%%i
HTH Biber
Bitte warten ..
Mitglied: Biber
01.12.2006 um 18:08 Uhr
Und, wenn ich Axels Idee aufgreife und mit der einfachen DIR-Ausgabe die dritte Zeile rausflöhen will:
[CMD-Prompt]
01.
>for /F "delims=: tokens=2" %a in ('dir /b *.zip^|findstr /n .^|findstr "^3:"') do @echo %a %~za 
02.
PDF_ConverterPro_drucker.zip 6723
-oder ohne Findstr und Nummerieren..-
01.
>Set /a "x=0">nul & for /F %a in ('dir /b *.zip') do @Set /a "x+=1">nul & @if !x!==3 @echo %a %~za 
02.
PDF_ConverterPro_drucker.zip 6723
Als Batch mit [Parameter zeilennr]
01.
::-----DispFileNo.Bat Parameter nr 
02.
@echo off & setlocal EnableDelayedExpansion 
03.
Set /a "x=0" 
04.
for /F %%a in ('dir /b') do ( 
05.
     Set /a "x+=1" 
06.
     if [!x!]==[%1]  ( 
07.
             echo %%a %%~za  
08.
            goto :eof 
09.
10.
)
Gruß
Biber
Bitte warten ..
Mitglied: dumbo
02.12.2006 um 16:03 Uhr
auch wenn ich es momentan nicht
nachvollziehen kann, wieso es nun gerade die
dritte der Dateien aus der DIR-Anzeige sein
soll..

Das ist ganz einfach ;=)
Ein tool benötigt von wechselnden Dateien immer die Größe in Byte, also dachte ich mir, per batch ist das sicher sinniger, als ständig in den Eigenschaften nachzuschauen und das einzeln für jede Datei.

Es soll aber nicht nur die dritte sein, sondern bedingt durch die Ausgabe von dir /-C ab der 3. bis zur 3. letzten.

Ich werde mir eure Beispiel mal zu Gemüte führen und hoffentlich keine Fragen mehr haben.
Vielen Dank für die Mühe.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...