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 erste 6 Zeilen und letzte löschen

Mitglied: ManneKL

ManneKL (Level 1) - Jetzt verbinden

12.02.2007, aktualisiert 17.02.2007, 7208 Aufrufe, 13 Kommentare

erste 6 Zeilen und letzte löschen

Hallo ,
brauche mal dringend Eure Hilfe, sonst komme ich nicht weiter.
Ich habe eine Kontoumsaetze_123456_9874561.cvs-Datei (Excel) und will in dieser

immer die ersten 6 Zeilen gelöscht haben und immer die letzte Zeile auch.Dazwischen

sind aber gefüllte Zeile (ca. 1-300), die drin bleiben sollen, zum einlesen in eine

Access-Datenbank.
Am Ende soll dann noch die Datei umbenannt werden in "Kontoumsaetze".
Kann mir da mal jemand helfen, denn mit einfachen kopieren und umbennenn komme ich

nicht zum Ziel.Dieses will ich mit einen Batch , als *.bat durchführen.
Für Eure hilfreiche Unterstützung, wär ich sehr dankbar.
Manne
Mitglied: miniversum
12.02.2007 um 11:55 Uhr
01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
set infile=1.txt 
04.
set tempfile=2.txt 
05.
set outfile=3.txt 
06.
set frontcut=6 
07.
set backcut=1 
08.
 
09.
set zeile=0 
10.
FOR /F "tokens=1 delims=" %%A in (%infile%) do ( 
11.
set /a zeile=!zeile!+1 
12.
if !zeile! gtr %frontcut% echo %%A>>%tempfile% 
13.
14.
 
15.
set /a zeile=!zeile!-%frontcut% 
16.
 
17.
FOR /F "tokens=1 delims=" %%A in (%tempfile%) do ( 
18.
if !zeile! gtr %backcut% echo %%A>>%outfile% 
19.
set /a zeile=!zeile!-1 
20.
)
miniversum

[Edit]: Nach dem Test Code angepasst
Bitte warten ..
Mitglied: ManneKL
12.02.2007 um 18:29 Uhr
Hallo miniversum,
habe den Batch zusammen mit der.cvs-Datei in einen Ordner gelegt und ausgeführt, aber leider ohne Erfolg. das Dos-Fenster geht kurz auf und zu ohne etws gemacht zu haben.
Habe schon verschiedene sachen ausprobiert, aber komme nicht weiter.
Vielleicht kann mir noch jemand behilflich sein?
Gruß
manne
Bitte warten ..
Mitglied: miniversum
12.02.2007 um 19:51 Uhr
Also getestet habe ich es mit folgender datei:
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
 
und es funktioniert so bei mir.

Kannst Du mal deine csv Datei posten? (Halt nur die ersten und letzten paar Zeilen)

miniversum
Bitte warten ..
Mitglied: Biber
12.02.2007 um 20:38 Uhr
Hmm, ManneKL und miniversum,

unabhängig von der Fehlersuche (deren Ausgang mich auch interessiert), würde ich eine dreiteilige Strategie vorschlagen:

1.) die .csv-Datei reduziert um die ersten 6 Zeilen in eine Temp-Datei kloppen wie auch in miniversums Skizze.
Dafür würde ich allerdings den sehr viel schnelleren More-Befehl nehmen:
More /+6 Kontoumsaetze_123456.csv %temp%\WithOutFirst6lines.csv

2) was Dir im Batch nicht erspart bleibt, wenn Du die Zeilenanzahl brauchst:
- einmal alle Zeilen durchwackeln und hochzählen:
for /f %%i in (WithOutFirst6lines.csv) do set /a lines+=1
REM in lines steht jetz die Gesamt-Zeilenzahl

3) danach musst Du nochmal, genauso zeilenweise durch (wie in miniversums Beispiel) und alle Zeilen außer der letzten raushauen...

01.
... 
02.
REM %lines% ...möge ermittelt sein... 
03.
Set /a linesNow=0 
04.
for /f "delims=" %%i in (%temp%\WithOutFirst6lines.csv) do call EchoIt "%%i"  
05.
goto :eof 
06.
 
07.
:EchoIt --- Parameter %1 ist eine ganze Zeile "in Anführungszeichen" 
08.
Set /a linesNow+=1 
09.
If [%linesNow%] LSS [%Lines%] Echo "%~1" >>output.csv
Gruss
Biber
Bitte warten ..
Mitglied: ManneKL
13.02.2007 um 18:38 Uhr
Hallo miniversum,

hier schicke ich Dir mal einen Ausschnitt der .cvs-Datei:

Umsätze - persönliches Konto (00) Kundennummer: 999/36669999
01.01.2006 - 30.06.2006
Letzter Kontostand 295,06 EUR
Gebuchte Umsätze (Vorgemerkte und noch nicht gebuchte Umsätze sind nicht Bestandteil dieser Aufstellung)
Es werden nur die Umsätze der letzten 120 Tage angezeigt.
Buchungstag Wert Verwendungszweck Soll Haben Waehrung
01.03.2006 01.03.2006 Dauerauftrag an Ruecklagen auf DiBa 100 EUR
03.03.2006 03.03.2006 EC-AUTOMAT 03.03 KARTE 9 -300 EUR
.
.
.

Kontostand (29.06.2006): 498,18 EUR

Meine Versuche sind sehr leienhaft, aber vielleicht kannst Du mir nochmal helfen.
Also, es sollen die ersten 6-Zeilen raus und immer die letzte Zeile und dann soll die cvs-Datei umbenannt werden in KontoumsätzeTagesdatum.cvs.

Würde mich freuen , wenn es klappt.
Gruß
Manne
Bitte warten ..
Mitglied: miniversum
13.02.2007 um 20:02 Uhr
ich hab deine Datei so genommen:
01.
Umsätze - persönliches Konto (00) Kundennummer: 999/36669999 
02.
01.01.2006 - 30.06.2006 
03.
Letzter Kontostand 295,06 EUR 
04.
Gebuchte Umsätze (Vorgemerkte und noch nicht gebuchte Umsätze sind nicht Bestandteil dieser Aufstellung) 
05.
Es werden nur die Umsätze der letzten 120 Tage angezeigt. 
06.
Buchungstag Wert Verwendungszweck Soll Haben Waehrung 
07.
01.03.2006 01.03.2006 Dauerauftrag an Ruecklagen auf DiBa 100 EUR 
08.
02.03.2006 03.03.2006 EC-AUTOMAT 03.03 KARTE 9 -300 EUR 
09.
03.03.2006 01.03.2006 Dauerauftrag an Ruecklagen auf DiBa 100 EUR 
10.
04.03.2006 03.03.2006 EC-AUTOMAT 03.03 KARTE 9 -300 EUR 
11.
05.03.2006 01.03.2006 Dauerauftrag an Ruecklagen auf DiBa 100 EUR 
12.
06.03.2006 03.03.2006 EC-AUTOMAT 03.03 KARTE 9 -300 EUR 
13.
07.03.2006 01.03.2006 Dauerauftrag an Ruecklagen auf DiBa 100 EUR 
14.
08.03.2006 03.03.2006 EC-AUTOMAT 03.03 KARTE 9 -300 EUR 
15.
Kontostand (29.06.2006): 498,18 EUR
und habs mit meiner Variante und mit Bibers Variante (leicht abgeändert) probiert:
01.
@echo off & setlocal enabledelayedexpansion 
02.
 
03.
set infile=b.txt 
04.
set tempfile=bt.txt 
05.
set outfile=out.txt 
06.
set frontcut=6 
07.
set backcut=1 
08.
 
09.
More +%frontcut% %infile%>%tempfile% 
10.
 
11.
 
12.
for /f %%i in (%tempfile%) do set /a lines+=1 
13.
 
14.
Set /a linesNow=0 
15.
for /f "delims=" %%i in (%tempfile%) do call:EchoIt "%%i"  
16.
goto :eof 
17.
 
18.
:EchoIt --- Parameter %1 ist eine ganze Zeile "in Anführungszeichen" 
19.
Set /a linesNow+=1 
20.
If [%linesNow%] LSS [%Lines%] Echo %~1 >>%outfile%
und beides hat funktioniert.
Sieht die csv Datei den so aus im Nodepad oder hast du die aus Excel rauskopiert?

miniversum
Bitte warten ..
Mitglied: Biber
13.02.2007 um 21:28 Uhr
[nicht weiter wichtige Fussnote]
"enableDelayedExpansion" und das nie verwendete %backcut% könnte man/frau sich für schlechtere Zeiten zurücklegen...

Aber sonst sehe ich es ähnlich... es sollte eigentlich funktionieren.

Wollen wir es nochmal mit den konkreten Pfad/Dateinamen durchspielen, Manne_KL?

Gruss
Biber
Bitte warten ..
Mitglied: ManneKL
14.02.2007 um 08:09 Uhr
Hallo miniversum + biber,

habe den Dateiausschnitt aus der Kontoumsatz.csv in Nodepad kopiert und

editiert(Zeilen + Zeichen gelöscht).In der Verarbeitung soll dann aber nur mit der

*.csv-Datei realisiert werden.
Der Pfad, wo die Datei + der Batch liegen ist:
C:\Kontoumsätze

Ich weis nicht woran daß liegen kann , daß es bei mir nicht funktioniert

(Leerzeichen in der Datei, kann ich nicht erkennen und...)

Danke im voraus für Eure Hilfe, aber wenn meine Experimente erfolglos beiben, dann

gebe ich auf.

Manne
Bitte warten ..
Mitglied: miniversum
14.02.2007 um 19:42 Uhr
Versuchs mal zur probe nicht mit C:\Kontoumsätze sondern mit C:\Kontoumseatze.
Vermeide Leerzeichen, Umlaute und Sonderzeichen in den Datei- und Verzeichnisnamen.
Versuchs mal mit Namen wie a.csv oder 1.csv

miniversum
Bitte warten ..
Mitglied: ManneKL
17.02.2007 um 09:27 Uhr
Hallo miniversum+Biber,
habe euren Vorschlag erfolgreich umsetzen können,hat mich einige Mühe gekostet aber dank Euerer unbezahlbaren Hilfe habe ich meine Dateibezeichnungen angeglichen und es funktioniert.Bis auch das löschen der letzten Zeile:Kontostand (29.06.2006): 498,18 EUR, die bleibt in der neuen Datei stehen.wie bekomme ich diese aber noch raus?
Bitte Euch nochmals um Hilfe.
Viele Grüße
Manne
Bitte warten ..
Mitglied: miniversum
17.02.2007 um 12:16 Uhr
Wie sieht deine Batch datei den nun aus. Kansnt Du die mal Posten?

gib mal:
nach Bibers Version nach dem
for /f %%i in (%tempfile%) do set /a lines+=1
das lines mit
echo %lines%
und nach meiner Version nach dem
set /a zeile=!zeile!-%frontcut%
das zeile mit
echo %zeile%
aus.

Dies sollte der Anzahl der Zeilen der Datei - 6 entsprechen.

miniversum
Bitte warten ..
Mitglied: ManneKL
17.02.2007 um 16:26 Uhr
Hallo miniversum,
hier ist der Batch, wo die letzte Zeile nicht gelöscht wird:

@echo off & setlocal enabledelayedexpansion

set infile=Kontoumsaetze2.csv
set tempfile=Kontoumsaetze_temp.csv
set outfile=Kontoumsaetze_out2.csv
set frontcut=6
set backcut=1

More +%frontcut% %infile%>%tempfile%

for /f %%i in (%tempfile%) do set /a lines+=1

Set /a linesNow=0
for /f "delims=" %%i in (%tempfile%) do call:EchoIt "%%i"
goto :eof

:EchoIt --- Parameter %1 ist eine ganze Zeile "in Anführungszeichen"
Set /a linesNow+=1
If [%linesNow%] LSS [%Lines%] Echo %~1 >>%outfile%



Vielleicht findest Du den Fehler wo die letzte gelöscht wird.
gruß
Manne
Bitte warten ..
Mitglied: ManneKL
17.02.2007 um 17:03 Uhr
Hallo miniversum,
habe die echo %lines% ergänzt und es funktioniert Deine Variante!
Vielen,vielen ...Dank für Eure Hilfe.

Gruß
Manne
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Batch um Zeichen aus erster und letzter Zeile einer TXT Datei zu löschen

Frage von Bobby0712Batch & Shell2 Kommentare

Hallo. Wie der Titel schon sagt suche ich eine möglichkeit wie ich aus einer TXT Datei aus der ersten ...

Batch & Shell

Batch um erste Zeile einer CSV zu löschen

gelöst Frage von chris1987.1Batch & Shell6 Kommentare

Hallo, im Rahmen meiner Masterarbeit muss ich eine Vielzahl von csv Dateien untersuchen. Hierbei muss ich einige dieser Dateien ...

Batch & Shell

Mehrere txt Dateien einlesen und letzte Zeile löschen

gelöst Frage von THRILLERBatch & Shell1 Kommentar

Hallo Gemeinde, ich beschäftige mich mit folgendem Problem. Und zwar will ich aus einem Ordner mehrere Dateien einlesen und ...

Batch & Shell

Per Batch erste Zeile aus CSV Dateien löschen

gelöst Frage von sirOneBatch & Shell15 Kommentare

Hallo zusammen! Ich suche ein Batch Script, mit dem ich aus sämtlichen CSV Dateien in einem Unterordner die erste ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 1 TagHumor (lol)4 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 1 TagExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 2 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 2 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
DSL, VDSL
Router Neustarts
Frage von XerebusDSL, VDSL16 Kommentare

Hallo an alle, ich hab eine Problem mit dem Neustart von meiner Fritz Box wo ich einfach nicht mehr ...

Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke14 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Webbrowser
Neuer Tab Firefox
gelöst Frage von BleifussWebbrowser12 Kommentare

Hallo, via Strg + T öffnet man ja einen neuen Tab. Gibt es die Möglichkeit, dass der Tab sich ...

Windows Server
2 DCs Hierarchie umkehren
Frage von TuberPlaysWindows Server11 Kommentare

Hallo, wir hatten bisher 1 Domain Controller in einer VM. Nun kam noch ein zusätzlicher Domain Controller auf einem ...