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

Textverarbeitung per Batch - Trennzeichen einfügen

Frage Entwicklung Batch & Shell

Mitglied: hoomer

hoomer (Level 1) - Jetzt verbinden

24.02.2009, aktualisiert 04.03.2009, 7695 Aufrufe, 7 Kommentare

Hallo, ich bin neu in diesem Forum, habe ein Problem und hoffe das mir jemand helfen kann.

Als Datenaustausch zwischen 2 Systemen wird eine txt-Datei erzeugt die mehrere hundert Zeilen enthält, die wiederum alle exakt 64 Zahlen enthalten.

In diesem Zahlenblock, sind keinerlei Trennzeichen enthalten, die allerdings für den Import in das 2. System notwendig sind.

Nun ist die Frage wie ich, am besten in dem Batch-Skript, Trennzeichen (Semikolon) an definierbare stellen einfügen lassen kann.

Definierbar deshalb, weil die zu trennenden Blöcke unterschiedlich viele Zahlen enthalten, diese aber pro Zeile gleich sind.

Ich hoffe mich klar und verständlich ausgedrückt zu haben.

PS: Ich habe in diversen Foren, auch in diesem, gesucht - aber dieses Problem leider nirgends finden können und hoffe das mir hier jemand helfen kann.
Mitglied: bastla
24.02.2009 um 21:28 Uhr
Hallo hoomer und willkommen im Forum!

Schematisch (und ungetestet) etwa so (unter der Voraussetzung, dass alle Zeilen verarbeitet werden sollen und sich keine "!" in den Daten befinden):
01.
@echo off & setlocal enabledelayedwxpansion 
02.
set "Alt=D:\Datei.txt" 
03.
set "Neu=D:\Datei.csv" 
04.
 
05.
if exist "%Neu%" del "%Neu%" 
06.
for /f "usebackq delims=" %%i in ("%Alt%") do ( 
07.
    set "Z=%%i" 
08.
    >>"%Neu%" echo !Z:~0,8!;!Z:~8,5!;!Z:~13,8!;!Z:~21,4!;... 
09.
)
Die Zerlegung der Zeile (Variable !Z!) in Zeile 8 basiert auf der Angabe der Anzahl zu überspringender Zeichen (Offset) und der Anzahl zu verwendender Zeichen - siehe dazu die Onlinehilfe mit "set /?" (dort gezeigt für %PATH%).

Grüße
bastla
Bitte warten ..
Mitglied: hoomer
25.02.2009 um 08:27 Uhr
Perfekt - danke für die schnelle Hilfe!!!!!

Gruß

Hoomer
Bitte warten ..
Mitglied: hoomer
25.02.2009 um 12:34 Uhr
Ich muss dieses Thema nochmals aufgreifen.
Als ich also gerade voller elan dabei war dieses Skript zu implementieren habe ich vor lauter schreck (mangels Information) festgestellt das die exportierte Datei aus System1 an mehreren Stellen Leerzeichen enthält, diese müssen entfernt werden, sonst scheitert der Import in System2.
Nun ist es dank der Hilfe von - bastla - , dafür nochmals danke - so das eine sauber getrennte Datei vorliegt die in etwa folgendem Muster entspricht:

163654;1165; 361456;243213153;
Das Endergebnis, damit der Import erfolgreich funktioniert muss so aussehen
163654;1165;361456;243213153;

Ich hoffe das mir nochmal jemand helfen kann.

PS: Habe schon diverse dinge mit der Funktion findstr probiert, komme aber irgendwie nicht ganz klar damit.
Bitte warten ..
Mitglied: miniversum
25.02.2009 um 12:53 Uhr
Ändere die Zeile 8 um in diese beiden Zeilen:
01.
set z=!Z:~0,8!;!Z:~8,5!;!Z:~13,8!;!Z:~21,4!;... 
02.
>>"%Neu%" echo !Z: =!
miniversum
Bitte warten ..
Mitglied: hoomer
04.03.2009 um 07:50 Uhr
Ich habe diesen Beitrag zwar schon als gelöst markiert, muss dieses Thema jetzt aber nochmals aufgreifen.

Das jetzige Skript sie so aus

@echo off & setlocal enabledelayedexpansion
set "INPUT=C:\INPUT.txt"
set "OUTPUT=C:\OUTPUT.txt"
if exist "%OUTPUT%" del "%OUTPUT%"
for /f "usebackq delims=" %%i in ("%INPUT%") do (
set "Z=%%i"
set z=!Z:~0,8!;!Z:~8,5!;!Z:~13,8!;!Z:~21,4!;!Z:~25,20!;!Z:~45,69!;
>>"%OUTPUT%" echo !Z: =!)

funktioniert Klasse!

Jetzt hat sich noch als Problem ergeben das ich bestimmte Zahlenbereiche löschen muss, bzw. definieren muss das diese nicht mit in die Output.txt übernommen werden.
Als Beispiel sollen die Zahlen 13-20 der Input.txt übersprungen werden.

Ich hoffe das das mittels Skript möglich ist und das mir jemand sagen kann wie.

Besten dank an alle die sich dieses "gelösten" Problems nochmals annehmen.

hoomer
Bitte warten ..
Mitglied: bastla
04.03.2009 um 09:16 Uhr
Hallo hoomer!

Wenn Du mit "Zahlen" bestimmte Felder meinst, müsste es doch genügen, den entsprechenden Teil, etwa
!Z:~102,8!;
in der Zeile 8 weg zu lassen...

Grüße
bastla
Bitte warten ..
Mitglied: hoomer
04.03.2009 um 09:32 Uhr
Manchmal sitzt man vor einem Problem und kommt einfach nicht auf das naheligendste.

Klar, du hast ja recht.

Ich muss das o.g. Skript zunächst abwandeln, das Leerzeichen als Zeichen behandelt werden und das Ergebnis in einer Datei Zwischenspeichern. Damit habe ich eine Datei mit Leerzeichen, in der die definierten Blöcke nicht mehr erscheinen. Danach lasse ich das Skript über die zwischengespeicherte Datei laufen und fertig.

Super - DANKE.

hommer
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch zum bearbeiten mehrerer CSV (3)

Frage von Matzus87 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

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

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...