2017-05-23 2 views
-2

Ich habe eine .txt-Datei, die einige Textzeilen wie diese hat,Split Textdatei auf bestimmte Trennzeichen%

%_N_LIBER_BROSA_DR_MPF 

;$PATH=/_N_WKS_DIR/_N_ACASA_WPD 

;PROGRAM LIBER BROSA DREAPTA 

;RECHTE SPINDEL LEEREN 

CHANDATA(2) 

M30% 

und ich brauche es in mehrere Dateien aufgeteilt. Das Trennzeichen ist % Zeichen und der neue Dateiname muss aus der ersten Zeile %_N_LIBER_BROSA_DR_MPF der Text zwischen %_N_ und _MPF in diesem Fall LIBER_BROSA_DR extrahiert werden.

Kann mir jemand helfen? Vielen Dank !!

Die Datei eine Ausgabe von einer CNC-Maschine ist, die CNC-Programme enthält:

bearbeiten [Stephan] (von nun gelöscht "Antwort" kopiert).

Wenn ich ein neues Archiv der Programme mache, gibt das Gerät eine TXT-Datei mit allen Programmen aus.

Jedes Programm beginnt mit% sign wie im Beispiel.

Ich brauche ein Skript zu machen, das Programm aus der TXT-Datei zu extrahieren und sie in neue TXT-Datei mit dem Namen von den Zeichen zwischen% N und _MPF speichert

%_N_000DNC_MPF 
;$PATH=/_N_WKS_DIR/_N_000DNC_WPD 
; TRANSFER DNC 
; !!! A NU SE STERGE !!! 
; PROG:52343001 
M30 
%_N_DR_LIBER_BROSA_MPF 
;$PATH=/_N_WKS_DIR/_N_ACASA_WPD 
;PROGRAM LIBER BROSA DREAPTA 
;RECHTE SPINDEL LEEREN 
CHANDATA(2) 
STOPRE 
RE_SP2_SOLL_WZG="0" ;"LAMAJ_20_RAD" ;"MULTI_CDR_LUNG" ;"0" 
RE_WZW 
G04 F5 
M30 
%_N_STG_LIBER_BROSA_MPF 
;$PATH=/_N_WKS_DIR/_N_ACASA_WPD 
;PROGRAM LIBER BROSA STG. 
;LINKE SPINDEL LEEREN 
CHANDATA(1) 
LI_SP1_SOLL_WZG="0" ; "DECKEL";"BURGHIU_39";"0" 
LI_SP3_SOLL_WZG="DECKEL" ;"MULTI_CDR" 
LI_WZW 
G04 F2 
M30 
+2

Sie sollten zuerst suchen und Ihren Code anzeigen. SO ist kein Code-Schreibdienst. – jeb

+0

Was haben Sie versucht, und wie hat das, was Sie versucht haben, gescheitert? Idealerweise sollten Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) von dem, was Sie versucht haben, bereitstellen und spezifische Informationen dazu, wie es fehlgeschlagen ist, mit Fehlermeldungen und/oder fehlerhafte Ausgabe. SO ist kein Code-Schreibdienst; Die besten Fragen sind solche, die nützliche Informationen liefern, so dass diejenigen, die antworten, Sie bei der Ausarbeitung Ihrer eigenen richtigen Antwort unterstützen können. Siehe [So stellen Sie eine gute Frage] (http://stackoverflow.com/help/how-to-ask). –

+0

Es wäre auch hilfreich von Ihnen, uns mehr Informationen über Ihre Quelltextdatei zur Verfügung zu stellen. Was meinst du mit '%' ist das Trennzeichen? Wie wurde die Datei erstellt? Wird es von einem anderen Skript oder Befehlsprozess ausgegeben? Sind die leeren Zeilen vorgesehen? Sollte es eine einzige Linie sein? _ (wenn nicht dann würde ich annehmen, dass CR/LF abgrenzen würde) _. – Compo

Antwort

0

so etwas wie diese ?

setlocal enabledelayedexpansion 
@echo off 
for /f "eol=€ delims=" %%a in (t.txt) do (
    set "line=%%a" 
    if "!line:~0,1!"=="%%" (
    set name=!line:*N_=! 
    set name=!name:_MPF=! 
) 
    >>"!name!.txt" echo %%a 
) 

Hinweis: Wählen Sie einen Charakter, der in der Datei nicht als eol (Ende der Zeile) sein wird. Standard für eol ist ;, so müssen wir eine andere angeben (weil sonst würden wir die Kommentarzeilen verlieren)

Verwandte Themen