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

per Batch Zeichen in Textzeilen einfügen

Frage Entwicklung Batch & Shell

Mitglied: thorti86

thorti86 (Level 1) - Jetzt verbinden

19.09.2009 um 19:02 Uhr, 5967 Aufrufe, 3 Kommentare

Hallo,

ich möchte gerne txt Dateien mit gleichem Aufbau (Satzlänge immer gleich) per Batch wie folgt ändern:


Ursprünglicher Aufbau
43201 10090916150400100002023 4.171117
43201 10090911261700400006320 24.54246666


gewünschter Aufbau
43201 10.09.0916:15:0400100002023 4.171117
43201 10.09.0911:26:1700400006320 24.54246666


Ziel soll es sein, dass an Stelle 13 + 15 ein Punkt (.) und an Stelle 19 + 21 ein Doppelpunkt ( eingesetzt wird.

Hat jemand ein Vorschlag, wie man dies lösen kann? Habe es schon mit dem for-Befehl versucht - leider ohne Erfolg.


Danke im Voraus.
Mitglied: Biber
19.09.2009 um 20:09 Uhr
Moin thorti86,

willkommen im Forum.

Bitte in diesem Seitenarm des Forums kein "Danke im Voraus".

Du kannst die Zeilen im Batch jeweils als eine ganze Zeile einlesen, in eine Variable speichern und dann mit Substring-Funktionen aus Teilen dieser Variablen eine neue Zeile zusammenbraten.

Lösungsskizze:
01.
@echo off & setlocal 
02.
FOF /F "delims=" %%i in ("D:\EineDatei.txt") do set "line=%%" & call:ProcessLine 
03.
goto :eof 
04.
 
05.
:processline In %line% ist je eine ganze Zeile 
06.
Echo %line:~0,12%.%%line:~13,2%.%line:~15,2% usw. 
07.
goto :eof
Jeweils ein %line:~0,12% ist zu lesen als "Teilstring von %line% von Pos. 0 Länge 2 Zeichen.

Kannst ja mal, wenn der Ansatz so funktioniert, das Skript posten, meins ist nur eine Skizze.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
19.09.2009 um 20:21 Uhr
Hallo thorti86 und willkommen im Forum!

Etwa so (allerdings auf Basis Deiner Beispiele und nicht Deiner Angabe, daher Punkte an Position 9 und 11 etc):
01.
@echo off & setlocal 
02.
set "Datei=D:\Dein.txt" 
03.
set "Bak=bak" 
04.
 
05.
set /p Zeile1=<"%Datei%" 
06.
if "%Zeile1:~8,1%"=="." echo Datei bereits im richtigen Format & goto :eof 
07.
 
08.
move "%Datei%" "%Datei%.%Bak%">nul 
09.
for /f "usebackq delims=" %%i in ("%Datei%.%Bak%") do set "Zeile=%%i" & call :ProcessLine 
10.
::del "%Datei%.%Bak%" 
11.
goto :eof 
12.
 
13.
:ProcessLine 
14.
>>"%Datei%" echo %Zeile:~,8%.%Zeile:~8,2%.%Zeile:~10,4%:%Zeile:~14,2%:%Zeile:~16% 
15.
goto :eof
Soferne Du die ursprüngliche Datei (mit Zusatz ".bak") als Sicherung nicht benötigst, kannst Du die beiden Doppelpunkte in Zeile 10 entfernen.

Grüße
bastla

[Edit] @Biber: Was machst Du denn um diese Zeit hier? Und warum bin ich schon wieder so langsam? Nö, sag' lieber nix ... [/Edit]
Bitte warten ..
Mitglied: Biber
26.09.2009 um 13:29 Uhr
Moin thorti86,

wie ist denn der Status dienes Beitrags?
Kann ein Haken dran oder hast Du Rückfragen?

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch for f Befehl erkennt doppelte Zeichen als eines (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batch variable DOS-Funktion von "größer" und "kleiner" Zeichen unterdrücken (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Variable auf 5 Zeichen begrenzen (5)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...