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, 6005 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 ..
Ähnliche Inhalte
Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen (9)

Frage von Frensche zum Thema Batch & Shell ...

Batch & Shell
gelöst Sonderzeichen in eine Batch automatisch einfügen (18)

Frage von Dr.Byte zum Thema Batch & Shell ...

Voice over IP
Freeswitch Sammelrufnummer besetzt zeichen (1)

Frage von frephisten zum Thema Voice over IP ...

Microsoft Office
"Microsoft Excel kann die Daten nicht einfügen" (2)

Frage von arik12 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (58)

Frage von pjrtvly zum Thema Internet ...

DSL, VDSL
VDSL Signal via PowerLine an Fritzbox - Möglich? (19)

Frage von Seichobob zum Thema DSL, VDSL ...

Windows Server
Benutzer sperrt sich immer wieder im Active Directory Contoller (16)

Frage von Kirdy1301 zum Thema Windows Server ...