Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Einen definierte Anzahl Zeichen aus den Zeilen einer Textdatei entfernen

Frage Entwicklung Batch & Shell

Mitglied: jabali07

jabali07 (Level 1) - Jetzt verbinden

24.10.2007, aktualisiert 25.10.2007, 9941 Aufrufe, 4 Kommentare

Moin zusammen,

vielleicht hat ja jemand von Euch eine Idee für mein Problem...

Aus einem Prozeß, auf den ich leider keinen Einfluss habe, erhalte ich täglich eine Textdatei, Namens "Checkcodes.txt".
In jeder Zeile der Textdatei muss stets das 16. bis einschließlich 23.Zeichen entfernt (ausgeschnitten) werden, um die Datei weiter verwursten zu können.

Beispielzeile:

Aus dem Prozeß kommt: (Der Zeitcode ist dummerweise immer doppelt vorhanden.)

XTLJ_ 10/02/07 12:16:40 12:16:40 12 XCOO7A2H1W.FR2


So muss es später aussehen:

XTLJ_ 10/02/07 12:16:40 12 XCOO7A2H1W.FR2


Eine aufwendige und zitterige Handarbeit, die meine Haare ergrauen läßt.

Die Anzahl der Zeilen dieser täglich neu erstellten Textdatei variiert leider immer.
Kann man da trotzdem eine Batch-Routine finden, die diese Aufgabe bewältigt?

Herzliche Grüße und vielen Dank vorab für Eure Mühe
Jabali07
Mitglied: miniversum
24.10.2007 um 12:33 Uhr
Wenn du immer genau diese anzahl an Zeichen wilslt dann versuchs mal so:
@echo off
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
FOR /F "delims=" %%l in ("%infile%") do echo %%l:~0,15%%l:~16>>"%outfile%"

Wenn das Format immer so bleibt und du dich an den Leerstellen orientieren kannst dann kannst dus so versuchen:
@echo off
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
FOR /F "tokens=1,2,3,5,6 delims= " %%a in ("%infile%") do echo %%a %%b %%c %%d %%e %%f>>"%outfile%"

miniverusm
Bitte warten ..
Mitglied: ITwissen
24.10.2007 um 13:27 Uhr
Falls das OS zufaelligerweise GNU/Linux waere, geht es so:

01.
cut -b1-15,24- < Checkcodes.txt > output.txt
Bitte warten ..
Mitglied: bastla
24.10.2007 um 21:27 Uhr
@miniversum
Da für Laufvariable die zeichenweise Zerlegung nicht vorgenommen werden kann, musst Du die eingelesene Zeile zunächst einer weiteren Variable zuweisen, was (zur Vermeidung der "delayedexpansion") in einem Unterprogramm erfolgen sollte, also etwa:
01.
@echo off & setlocal 
02.
set "infile=C:\Checkcodes.txt" 
03.
set "outfile=C:\Checkcodes_cut.txt" 
04.
if exist "%outfile%" del "%outfile%" 
05.
FOR /F "usebackq delims=" %%L in ("%infile%") do call :ProcessLine "%%L" 
06.
goto :eof 
07.
 
08.
:ProcessLine 
09.
set "Line=%~1" 
10.
(echo %Line:~0,15%%Line:~24%)>>"%outfile%"
Die Variante 2 benötigt auch noch kleinere Anpassungen:
01.
@echo off & setlocal 
02.
set "infile=c:\eingangsdatei.txt" 
03.
set "outfile=c:\ausgangsdatei.txt" 
04.
if exist "%outfile%" del "%outfile%" 
05.
FOR /F "usebackq tokens=1,2,3,5,6" %%a in ("%infile%") do (echo %%a %%b %%c %%d %%e)>>"%outfile%"
Grüße
bastla
Bitte warten ..
Mitglied: jabali07
25.10.2007 um 11:41 Uhr
@all: Herzlichen Dank für die Mühe und die prompte Hilfe an alle.

Den zweiten Vorschlag von miniverusm hatte ich mir gestern noch "zurechtgeschüttelt". Funktioniert bestens.

Die beiden 'batches' von bastla habe ich dann heute auch laufen lassen. Simply Perfekt!

Eine riesen Arbeitserleichterung für mich. Nochmals Dankeschön!

Gruß jabali07
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...