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

Aus allen TXT Dateien eines Verzeichnisses die erste Zeile entfernen

Frage Entwicklung Batch & Shell

Mitglied: intermde

intermde (Level 1) - Jetzt verbinden

31.08.2012 um 20:05 Uhr, 3827 Aufrufe, 11 Kommentare

Hallo,

ich habe über Programme TXT Dateien erzeugt bekommen. Nun möchte ich per Batch oder vbs Script erreichen, dass aus diesem Verzeichnis X alle TXT Dateien die erste Zeile gelöscht wird.
Die Dateien sollen nicht unter einem anderen Namen gespeichert werden, sondern nur erste Zeile entfernen und dann speichern.

Ich kenne mich mit scripten nicht aus, daher die Frage im Forum.

Danke für eure Hilfe
Mitglied: MisterExpulso
31.08.2012, aktualisiert um 20:26 Uhr
Hallo,
in etwa so?

01.
@echo off & setlocal 
02.
 
03.
set "folder=C:\Folder" 
04.
 
05.
pushd "%folder%" || goto :eof 
06.
for /f "delims=" %%a in ('dir /a-d /b *.txt') do ( 
07.
  set "filename=%%a" 
08.
  call :procFile 
09.
10.
goto :eof 
11.
 
12.
:procFile 
13.
type nul>"tmp.txt" 
14.
for /f "delims=: tokens=1*" %%b in ('findstr /n /r /c:"^" "%filename%"') do ( 
15.
  set "lineNr=%%b" 
16.
  set "lineTxt=%%c" 
17.
  call :procLine 
18.
19.
move "tmp.txt" "%filename%" 
20.
goto :eof 
21.
 
22.
:procLine 
23.
if %lineNr% leq 1 goto :eof 
24.
if not defined lineTxt ( 
25.
  >>"tmp.txt" echo. 
26.
  goto :eof 
27.
28.
set "lineTxt=%lineTxt:^=^^%" 
29.
set "lineTxt=%lineTxt:&=^&%" 
30.
set "lineTxt=%lineTxt:<=^<%" 
31.
set "lineTxt=%lineTxt:>=^>%" 
32.
set "lineTxt=%lineTxt:|=^|%" 
33.
>>"tmp.txt" echo.%lineTxt% 
34.
goto :eof
Gruß,
DB
Bitte warten ..
Mitglied: bytecounter
31.08.2012, aktualisiert um 20:28 Uhr
Hallo,

die erste Zeile kannst Du wie folgt entfernen:

01.
FOR /F "tokens=*" %%a IN ('DIR *.txt /B') DO ( 
02.
  RENAME "%%a" "%%a.bak" 
03.
 
04.
  FOR /F "tokens=* skip=1 usebackq" %%b IN ("%%a.BAK") DO ( 
05.
    ECHO %%b >>"%%a" 
06.
07.
 
08.
   
09.
)
Anschließend kannst Du die .bak Dateien löschen:

01.
del *.bak
vg
Bitte warten ..
Mitglied: bastla
31.08.2012 um 21:20 Uhr
Hallo @All!

Vielleicht auch so (ungetestet):
01.
for /f "delims=" %%i in ('dir /b *.txt') do ( 
02.
    more +1 "%%i">"%temp%\Tmp.txt" 
03.
    move "%temp%\Tmp.txt" "%%i" 
04.
)
Grüße
bastla
Bitte warten ..
Mitglied: 60730
31.08.2012, aktualisiert um 21:27 Uhr
Moin,

Ohne den beiden vorschreibern nahetreten zu wollen, aber beide loesungen haben einen je einen haken.....

More verschluckt gerne mal tabs in "tabellen", for schleifen moegen bestimmte sonderzeichen nicht.

Von daher, warum willst du das denn ueberhaupt machen?

Und dann, wie willst du verhindern, dass das script eine datei nicht per dummen zufall 2 mal anfasst und dir dann ? Zeilen fehlen?

Gruss
Bitte warten ..
Mitglied: intermde
31.08.2012 um 21:54 Uhr
Hintergrund ist eigentlich, dass diese Dateien in Access weiter verwendet werden sollen

Problem, in Access kann ich bei import nicht angeben, dass er die erste Zeile ignorieren soll, da erst in der zweiten Zeile "Spaltenüberschriften" stehen

Hab nun aber festgestellt, dass Access Probleme hat die Dateien zu importieren wenn als Trennzeichen ein ","
ersetzte ich dieses händisch durch ein ";" kann die Datei eingebunden werden.

wie kann ich das Script

01.
@echo off & setlocal 
02.
 
03.
set "folder=C:\Folder" 
04.
 
05.
pushd "%folder%" || goto :eof 
06.
for /f "delims=" %%a in ('dir /a-d /b *.txt') do ( 
07.
  set "filename=%%a" 
08.
  call :procFile 
09.
10.
goto :eof 
11.
 
12.
:procFile 
13.
type nul>"tmp.txt" 
14.
for /f "delims=: tokens=1*" %%b in ('findstr /n /r /c:"^" "%filename%"') do ( 
15.
  set "lineNr=%%b" 
16.
  set "lineTxt=%%c" 
17.
  call :procLine 
18.
19.
move "tmp.txt" "%filename%" 
20.
goto :eof 
21.
 
22.
:procLine 
23.
if %lineNr% leq 1 goto :eof 
24.
if not defined lineTxt ( 
25.
  >>"tmp.txt" echo. 
26.
  goto :eof 
27.
28.
set "lineTxt=%lineTxt:^=^^%" 
29.
set "lineTxt=%lineTxt:&=^&%" 
30.
set "lineTxt=%lineTxt:<=^<%" 
31.
set "lineTxt=%lineTxt:>=^>%" 
32.
set "lineTxt=%lineTxt:|=^|%" 
33.
>>"tmp.txt" echo.%lineTxt% 
34.
goto :eof
erweitern, dass er mir ein "," mit ";" ersetzt.

bzw. wie man beides miteinander kombinieren kann,
sprich erstze nur die erste zeile und ersetzte in den Dateien das "," durch ";"

Danke nochmal für die Hinweise.
Bitte warten ..
Mitglied: 60730
31.08.2012, aktualisiert um 22:52 Uhr
Ganz ehrlich?

Schaff dir nen mysqlserver an, verlagere die tabellen in diese und verknuepfe die in access und du hast nicht nur einen riesen schritt in sachen performance gemacht, auch das rumfuhrwerken in den daten kannst du dir sparen.
Mysql kann logischerweise auch ein skip xxx beim importieren.

Gruss
Bitte warten ..
Mitglied: pieh-ejdsch
31.08.2012, aktualisiert um 23:06 Uhr
moin,

dann definiere doch mal genau wie die erste Zeile sich von den Anderen Zeilen Unterscheidet, dann liese sich auch ein doppeltes Anfassen der Datei verhindern.

Sonst würde ich dies Einfach mit einer Ordentlich angelegten Temporären Datei Lösen - was auch Fixer geht.
01.
@echo off 
02.
setlocal disabledelayedexpansion 
03.
pushD D:\Ordner ||echo Datei nicht gefunden! 1>&2 &&exit /b 1 
04.
for /f delims^= %%i in ('dir /a-d /b *.txt' ) do ( 
05.
  findstr /n "^" "%%~i"|find /vb "1:" 1>"%temp%\wO1st.txt" 
06.
07.
  for /f "usebackqdelims=" %%j in ("%temp%\wO1st.txt" ) do ( 
08.
    set "line=%%i" 
09.
    setlocal enabledelayedexpansion 
10.
    set "Line=!Line:,=;!" 
11.
    echo(!Line:*:=! 
12.
    endlocal 
13.
  ))>"%%~i" 
14.
15.
del "%temp%\wO1st.txt"
Gruß Phil
Bitte warten ..
Mitglied: bastla
01.09.2012, aktualisiert um 00:03 Uhr
@ T-Mo
VBS verschluckt jedenfalls nix :
01.
Ordner = "D:\X" 
02.
Typ = "txt" 'in Kleinbuchstaben 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
For Each Datei In fso.GetFolder(Ordner).Files 
06.
    If LCase(fso.GetExtensionName(Datei.Name)) = Typ Then 
07.
        T = Datei.OpenAsTextStream.ReadAll 
08.
        fso.CreateTextFile(Datei.Path).Write Mid(Replace(T, ",", ";"), InStr(T, vbNewline) + 2) 
09.
    End If 
10.
Next
Und dann, wie willst du verhindern, dass das script eine datei nicht per dummen zufall 2 mal anfasst und dir dann ? Zeilen fehlen?
Soferne der Batch nur einmal läuft, kommt mit "dir /b" jede Datei auch nur einmal an die Reihe ...

Grüße
bastla
Bitte warten ..
Mitglied: Pjordorf
01.09.2012 um 01:26 Uhr
Hallo,

Zitat von intermde:
Problem, in Access kann ich bei import nicht angeben, dass er die erste Zeile ignorieren soll,
In Access 2003 und 2007 geht das sehr wohl. Und ich meine es auch in Access 2000 schon gemacht zu haben.

Hab nun aber festgestellt, dass Access Probleme hat die Dateien zu importieren wenn als Trennzeichen ein ","
Auch das geht seit Access 2000. Du kannst im Import fast jedes Zeichen als Trennzeichen definieren und noch etliche Optionen mehr.

Hier mal mit Access 2007 der Import einer .CSV Datei als Beispiel.
bac023a2dcccc00311307858064ccf7b - Klicke auf das Bild, um es zu vergrößern
de8dcac1d63eee09ab83b28d4d7c8f3a - Klicke auf das Bild, um es zu vergrößern
9a356409d604ad60f5c0a08ddff08b32 - Klicke auf das Bild, um es zu vergrößern
f63e44dfaf120c14be63d6c9354c6577 - Klicke auf das Bild, um es zu vergrößern

Und was du hier Händisch tun kannst, kann auch per VBA Automatisiert werden.

Gruß,
Peter
Bitte warten ..
Mitglied: intermde
01.09.2012 um 05:11 Uhr
Hallo, dank euch für die vielen Hinweise und Lösungen.
hab es soweit nun hinbekommen wie ich es für Access benötige.
werde nin eine weitere Frage eröffnen müssen, damit ich die Daten besser verwalten kann.

Denoch nochmal ein Dankeschön.
Bitte warten ..
Mitglied: 60730
01.09.2012 um 10:46 Uhr
(ot)

Bastla, "mir" musst du das doch nicht erklaeren
Frueher hab ich sowas ja auch mal mit der not dem teufel und den fliegen gesehen, aber mittlerweile sehe ich das aehnlich wie ein uns allen bekanntes geschoepf, was es damals (aus nicht nachvollziehbaten gruenden) nicht zu den bremer stadtmusikanten geschafft hat
Bitte warten ..
Ähnliche Inhalte
Ubuntu
Nach Zeilen aus der ersten Textdatei in der zweiten Textdatei suchen und diese dort entfernen
gelöst Frage von takitanoUbuntu3 Kommentare

Frohes Neues an alle! Ich habe 2 Textdateien. Die erste Textdatei beinhaltet Suchbegriffe, die ich in der zweiten Datei ...

Batch & Shell
Dateien umbenennen - ersten Zeichen entfernen
Frage von jan999Batch & Shell4 Kommentare

Moin! meine bessere Hälfte hat mich nach der Lösung folgender Aufgabe gefragt - eine Idee habe ich. Nur weiß ...

Batch & Shell
Erste Zeile einer Excel Datei vergleichen
gelöst Frage von Memo66Batch & Shell8 Kommentare

Hallo zusammen, ich habe folgendes Szenario. Ich bekomme täglich eine .csv Datei zugeschickt. In der Datei sind nun in ...

Batch & Shell
Batch: Mehrere .txt Dateien zu einer zusammenfügen, dabei jeweils die erste Zeile löschen
gelöst Frage von v.piepmatzBatch & Shell5 Kommentare

Hallo, ich bin leider kompletter Neueinsteiger bzgl. batch-Dateien, suche jetzt aber eine Möglichkeit mehrere .txt Dateien, welche in einem ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 6 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 13 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 15 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 18 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...