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, 7242 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.
1
02.
2
03.
3
04.
4
05.
5
06.
6
07.
7
08.
8
09.
9
10.
0
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
Exchange Server

Empfangene Email erst 6 Stunden später im Postfach

Frage von 113726Exchange Server3 Kommentare

Guten Morgen, meiner Kollegin ist heute aufgefallen, dass sie eine Mail bekommen hat von jemand (gesendet 12:48 Uhr und ...

Multimedia & Zubehör

Iphone 6 prob

gelöst Frage von jensgebkenMultimedia & Zubehör13 Kommentare

Hallo Gemeinschaft, nach einem Display und Akku Tausch geht nun die Powertaste nicht mehr - habt ihr vielleicht dafür ...

Vmware

Lizenz vSphere Essentials 6

Frage von schrodtiVmware11 Kommentare

Hallo Zusammen, ich bräuchte kurz Hilfe, was VMware Lizenzen angeht, stehe gerade auf dem Schlauch. Ich möchte einen virtualisierten ...

Windows Server

AD-Änderungen erst nach Replikation !?

gelöst Frage von RicoPausBWindows Server9 Kommentare

kurze angefragt Wenn ich am DC unserer Niederlassung Änderungen vornehme, wie z.B. Gruppenzugehörigkeiten oder Anpassungen an der GPO oder ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 9 StundenWindows 10

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 19 StundenExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 1 TagLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 2 TagenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Temporäre WLAN Verbindung für AD-Login
Frage von Christian.WidauerLAN, WAN, Wireless17 Kommentare

Hallo zusammen, ich weiß leider nicht unter welchem Begriff ich dafür suchen muss, daher habe ich bisher leider nichts ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server14 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

Netzwerkmanagement
Reverse Proxy für TCP und UDP Anfragen
gelöst Frage von flxklsNetzwerkmanagement14 Kommentare

Hallo zusammen, ich besitze einen Rootserver, der nur eine öffentliche IP besitzt und auf dem mehrere VMs laufen. Da ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...