erichr
Goto Top

Bestimmten Abschnitt aus einer Text-Datei kopieren

Hallo Zusammen,

Ich bin CNC-Programmierer und bräuchte unterstützung bei der Umsetzung meines Vorhabens.

Beim übertragen aller CNC-Programme auf den Rechner, erstellt die Software eine Textdatei wo dann alle CNC-Programme hintereinander reingeschrieben werden.

Jedes CNC Programm beginnt mit dem Programmnamen "$Programmname%".

Jetzt möchte ich jedes CNC-Programm in eine Seperate Datei abspeichern. Dateiname = Programmname ohne Sonderzeichen $%.

Ist das umsetzbar?

Beispiel:

$SPWE18937HART3.MIN%                                            ;Programmname
(15MM LAENGE WEGPLANEN AM D=25MM)
(SPANNEN AUF D=60.0MM IN AUSGEDR. BACKEN)
N1G50S1500
N2G00X600Z500
NT1( WNT CNMG 120408EN-42 CWN2135 )
N3G97S420T010101M42M03M08F0.3
-
-
-
N23G00X600Z500
N24M02
%$SPWE18937HART4.MIN%
( SPANNEN WIE VORHERIGES PROGRAMM )
( SPITZE CA. 111MM VOR WERKSTUECK POSITIONIEREN )
N1G50S1500
N2G00X600Z500
NT1 ( WNT CNMG 120408EN-42 CWN2135 )
N3G96S100T010101M42M03M08F0.3
N4G00X63Z-382.2
-
-
-
N75G00X100M9
N76G00X600Z500
N77M02
%$M6.MIN% 
N1G50 S2000
N2G00 X500 Z500
-
-
-
N78G00X600Z500
N79M02
%%                                                      ;Am Ende der Datei

Edit:
Ich möchte das über ein Batch-Programm laufen lassen.

Content-Key: 1409724981

Url: https://administrator.de/contentid/1409724981

Printed on: April 25, 2024 at 01:04 o'clock

Member: erikro
erikro Oct 20, 2021 at 13:53:59 (UTC)
Goto Top
Moin,
Zitat von @ErichR:
Jedes CNC Programm beginnt mit dem Programmnamen "$Programmname%".
> $SPWE18937HART3.MIN%                                            ;Programmname

Hier steht es so, wie im Text beschrieben.

> %$SPWE18937HART4.MIN%

Und hier steht noch ein % davor.

> %$M6.MIN% 

Und hier auch.
> 

Ich möchte das über ein Batch-Programm laufen lassen.

Darf es auch ein wenig Powershell sein? Ich habe das jetzt nach Deinem Text geschrieben. Wenn das Beispiel stimmt, dann ist das auch kein Problem. Dann muss nur die Regex und der Dateiname angepasst werden.

PARAM (

    $data = "e:\test\programmnamen\beispiel.txt",  
    $outputpath = "e:\test\programmnamen\"  

)

$aktfile = ""  

$file = get-content $data

foreach($line in $file) {
    
    if($line -match "^\$.*%$") {  
    
        $aktfile = $outputpath + $line.TrimStart("$").trimEnd("%")  
        $line | Out-File $aktfile -append -encoding utf8
    }
    else {

        $line | Out-File $aktfile -append -encoding utf8
    }
}

hth

Erik