Mit batch die erste Zeile einer TXT löschen, diese als Dateinamen verwenden und Datei 2 mal kopieren, Quelldatei löschen
Hallo, habe eine kleinere Modifikation zu einer vorhergehenden Frage, welche ich nun als neues Thema erstelle.
Habe dort dummerweise eine Kleinigkeit vergessen.
Ich möchte per batch die erste Zeile einer TXT Datei löschen, den Wert der gelöschten Zeile möchte ich aber als Dateinamen für die 2 neuen Dateien verwenden, welche ich an einen anderen Ort kopieren möchte. Die neuen Dateien sollen die Endung txt und csv erhalten.
Die Ursprungsdatei soll gelöscht werden.
Beispiel:
Die Datei hat ursprünglich den Namen Test.txt und liegt auf C:\Temp\
Die erste Zeile der mehrzeiligen Datei hat den Inhalt "Mayer"
Nun sollen die neuen Dateien
Mayer.txt und Mayer.csv lauten und auf C:\Test\ gespeichert werden.
Die Ursprungsdatei soll auf C:\Temp soll gelöscht werden.
D.h. die beiden neuen Dateien dürfen die erste Zeile der Ursprungsdatei nicht mehr enthalten.
Die Frage ist eine Erweiterung zu einer anderen vorher gestellten Frage, bei welcher die erste Zeile nicht zu löschen war.
Bastla hat hierfür bereits ein passendes Script geschrieben.
@echo off & setlocal
set Datei="C:\Temp\Test.txt"
set "Ziel=C:\Test"
set "Ext1=.txt"
set "Ext2=.csv"
set /p Neu=<"%Datei%"
copy "%Datei%" "%Ziel%\%Neu%%Ext1%">nul && move "%Datei%" "%Ziel%\%Neu%%Ext2%"
Frage:
Wie muss ich dieses Script ergänzen, damit die erste Zeile in den neuen Dateien nicht mehr vorhanden ist.
Gruß viking
Habe dort dummerweise eine Kleinigkeit vergessen.
Ich möchte per batch die erste Zeile einer TXT Datei löschen, den Wert der gelöschten Zeile möchte ich aber als Dateinamen für die 2 neuen Dateien verwenden, welche ich an einen anderen Ort kopieren möchte. Die neuen Dateien sollen die Endung txt und csv erhalten.
Die Ursprungsdatei soll gelöscht werden.
Beispiel:
Die Datei hat ursprünglich den Namen Test.txt und liegt auf C:\Temp\
Die erste Zeile der mehrzeiligen Datei hat den Inhalt "Mayer"
Nun sollen die neuen Dateien
Mayer.txt und Mayer.csv lauten und auf C:\Test\ gespeichert werden.
Die Ursprungsdatei soll auf C:\Temp soll gelöscht werden.
D.h. die beiden neuen Dateien dürfen die erste Zeile der Ursprungsdatei nicht mehr enthalten.
Die Frage ist eine Erweiterung zu einer anderen vorher gestellten Frage, bei welcher die erste Zeile nicht zu löschen war.
Bastla hat hierfür bereits ein passendes Script geschrieben.
@echo off & setlocal
set Datei="C:\Temp\Test.txt"
set "Ziel=C:\Test"
set "Ext1=.txt"
set "Ext2=.csv"
set /p Neu=<"%Datei%"
copy "%Datei%" "%Ziel%\%Neu%%Ext1%">nul && move "%Datei%" "%Ziel%\%Neu%%Ext2%"
Frage:
Wie muss ich dieses Script ergänzen, damit die erste Zeile in den neuen Dateien nicht mehr vorhanden ist.
Gruß viking
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148563
Url: https://administrator.de/contentid/148563
Ausgedruckt am: 26.11.2024 um 11:11 Uhr
8 Kommentare
Neuester Kommentar
moin viking,
tausche:
wenn die 1. Zeile eine Leerzeile ist bzw. Leerzeilen mit übernommen werden sollen mit dem hier:
nur wenn Keine Leerzeilen enthalten sind bzw. übernommen werden sollen diese Forschleife der Zeile 02 einsetzen:
Gruß Phil
tausche:
copy "%Datei%" "%Ziel%\%Neu%%Ext1%">nul && move "%Datei%" "%Ziel%\%Neu%%Ext2%"
wenn die 1. Zeile eine Leerzeile ist bzw. Leerzeilen mit übernommen werden sollen mit dem hier:
type nul>"%Ziel%\%Neu%%Ext1%"
for /f "skip=1 tokens=1* delims=:" %%i in ('findstr /n $ %Datei%') do echo %%j>>"%Ziel%\%Neu%%Ext1%"
copy "%Ziel%\%Neu%%Ext1%" "%Ziel%\%Neu%%Ext2%"
del %Datei%
nur wenn Keine Leerzeilen enthalten sind bzw. übernommen werden sollen diese Forschleife der Zeile 02 einsetzen:
for /f "usebackq skip=1 tokens=*" %%i in (%Datei%) do echo %%i>>"%Ziel%\%Neu%%Ext1%"
Gruß Phil
Hallo viking!
Etwa so:
Grüße
bastla
Etwa so:
@echo off & setlocal
set Datei="C:\Temp\Test.txt"
set "Ziel=C:\Test"
set "Ext1=.txt"
set "Ext2=.csv"
set /p Neu=<"%Datei%"
more +1 "%Datei%">"%Ziel%\%Neu%%Ext1%"
move +1 "%Datei%">"%Ziel%\%Neu%%Ext2%"
if exist "%Ziel%\%Neu%%Ext1%" if exist "%Ziel%\%Neu%%Ext2%" del "%Datei%"
bastla
Hallo viking!
Sorry wegen des "
Die Zeile 9 hatte den Sinn, die Originaldatei nur zu löschen, wenn beide neu erstellten Dateien vorhanden sind.
Grüße
bastla
P.S.: Gepostete Batches sehen in ""-Formatierung nicht nur besser aus; es ist auch leichter, sich auf einzelne Zeilen zu beziehen ...
Sorry wegen des "
move
" anstelle von "more
" - hatte ich nach dem Kopieren zu ändern vergessen ...Die Zeile 9 hatte den Sinn, die Originaldatei nur zu löschen, wenn beide neu erstellten Dateien vorhanden sind.
Grüße
bastla
P.S.: Gepostete Batches sehen in ""-Formatierung nicht nur besser aus; es ist auch leichter, sich auf einzelne Zeilen zu beziehen ...