sabinchen
Goto Top

Textdatei editieren

Hallo.
Ich hoffe, mir kann jemand bei der Lösung eines kleinen Problems helfen.
Ich habe eine Textdatei (Name ist immer unterschiedlich).
Nun sollen in dieser Textdatei die ersten 12 Zeilen gelöscht werden.
Anschließend sollen von allen anderen Zeilen die jeweils ersten 16 Zeichen gelöscht werden.
Danach soll die editierte Textdatei wieder unter dem gleichen Namen gespeichert werden.
Ist das per Batchdatei möglich und wie erhält die Batchdatei den Namen der zu editierenden Textdatei?
Kann man evtl. die Batchdatei aus einer anderen Batchdatei aufrufen?

Danke für eure Hilfe.

Liebe Grüße von
Sabine

Content-Key: 59648

Url: https://administrator.de/contentid/59648

Printed on: April 19, 2024 at 00:04 o'clock

Member: miniversum
miniversum May 23, 2007 at 17:34:39 (UTC)
Goto Top
Ist das die einzigste Datei in diesem Verzeichnis? Wenn ja dann gehts so (ungetestet):
@echo off & setlocal enabledelayedexpansion
for /F "delims=" %%n in ('dir /b /a-D C:\verzeichnis\*.*') do set filename=%%n  
if exist %filename%_temp del %filename%_temp
for /F "skip=12 delims=" %%t in ('type "%filename%"') do (  
set text=%%t
echo !text:~16!>>"%filename%_temp"  
)
del "%filename%"  
ren "%filename%_temp" "%filename%"  

miniversum
Member: sabinchen
sabinchen May 23, 2007 at 18:07:37 (UTC)
Goto Top
Hallo miniversum.
Danke für die schnelle Antwort.
Die Batchdatei funktioniert tadellos.
Leider ist die zu editierende Datei aber nicht die einzigste im Verzeichnis.
Auch ist das Verzeichnis nicht immer das gleiche.
Gibt es eine Möglichkeit, trotzdem das Problem zu lösen?

Vielen Dank und liebe Grüße von
Sabine
Member: miniversum
miniversum May 23, 2007 at 18:13:11 (UTC)
Goto Top
Es gibt noch die möglichkeit das du die dateiimmer auf die Batch datei ziehst per drag & drop oder als parameter mitgibst.
Dann müstest du die Batch datei Folgendermasen abändern:
@echo off & setlocal enabledelayedexpansion
set "filename=%~1"  
if exist %filename%_temp del %filename%_temp
for /F "skip=12 delims=" %%t in ('type "%filename%"') do (  
set text=%%t
echo !text:~16!>>"%filename%_temp"  
)
del "%filename%"  
ren "%filename%_temp" "%filename%"  

miniversum
Member: Biber
Biber May 23, 2007 at 20:18:20 (UTC)
Goto Top
Moin sabinchen,

willkommen im Forum.
Leider ist die zu editierende Datei aber nicht die einzigste im Verzeichnis
Es hätte auch gereicht, wenn es die einzige gewesen wäre.. face-wink

@miniversum
Kleiner Verbesserungsvorschlag:
Die "beliebige" Drag &Drop-Datei kann mit oder ohne Laufwerk/Pfad-Angabe kommen.
Spätestens beim Rename wird aber als zweiter Parameter etwas OHNE Lw/Pfad gebraucht.
Ich würde daher mit eher mit Copy als mit Rename arbeiten.
@echo off & setlocal enabledelayedexpansion
set "filename=%~1"  
Set "tempfile=%temp%\$%~nx1%"  
if exist "%tempfile%" del "%tempfile%"  
for /F "skip=12 delims=" %%t in ('type "%filename%"') do (  
set text=%%t
echo !text:~16!>>"%tempfile%"  
)
copy /y "%tempfile%" "%filename%" >nul  

Grüße
Biber
Member: Biber
Biber May 25, 2007 at 09:27:19 (UTC)
Goto Top
Moin sabinchen,

magst Du auch noch mal eine Rückmeldung schreiben?

Grüße
Biber

[Edit] Danke, sabinchen, für die schnelle Rückmeldung & Vrohe Vinxten![/Edit]
Member: sabinchen
sabinchen May 25, 2007 at 09:33:44 (UTC)
Goto Top
Hallo Biber.
Sry, ich konnte vorhin erst die Batchdatei mit Deinen Änderungen testen, da ich gestern nicht zu Hause war.
Vielen lieben Dank nochmal dafür. Es funktioniert super.

Liebe Grüße von
Sabine