Jump to content

Empfohlene Beiträge

Guten Morgen!

Wie gesagt, hier nochmals mein recht herzlichen Dank für die Lösung meines Problems! Habe gestern Abend noch versucht, zwei weitere für mich hilfreiche "Replacec" in dein programmiertes Skript zu schreiben, wobei ich allerdings kläglich gescheitert bin und die von Dir angesprochenen Frustrationen auslösten:cry3:

Den Rat mit den Video-Anleitungen über PowerShell nehme ich auf jeden Fall an und werde mich dahingehend weiterbilden.

Falls jemand einem momentan noch in Sachen PowerShell überforderten Lehrer unter die Arme greifen möchte und die Ernte ein paar dankbare Schüler wären hier die zwei Replacec ;-)

$_ -replace "SetApproachStrategy(true, false, -1)","SetApproachStrategy(false, true, 2)
$_ -replace "SetRetractStrategy(true, false, -1, 0)","SetRetractStrategy(false, true, 2, 0)

Danach werde ich selber versuchen, dieses Skript in das vom CAD-Hersteller bereitgestellte Skript einzubauen, in der Hoffnung, dass ich das hin bekomme;-)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Am Ende fehlen schon mal die schliessenden Hochkommas.

Und du musst die Klammern escapen, sprich mit \ "entwerten".

Schau die mal Replace aus dem Skript an, die funktionieren. Dann verstehst du was ich meine.

bearbeitet von tesso

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Habe den Code der Einfachheit halber und meiner möglichen Verständnissen  wieder etwas vereinfacht und die zwei gewünschten "Replacec" ergänzt, welche nun auch funktionieren (hat zu kleinen Erfolgserlebnissen geführt;-) ).. Die von BofH_666 geschriebene und bis dato funktionierende Ergänzung funktioniert jetzt leider nicht mehr. Poste den Code mal in der Hoffnung, dass jemand Abhilfe leisten kann.

$original_file = 'C:\Users\theo_\Documents\Seite_Rechts_2_1.xcs'
$destination_file =  'C:\Users\theo_\Documents\Seite_Rechts_2_1.xcs'
(Get-Content $original_file) | Foreach-Object {
    $_ -replace "SetWorkpieceSetupPosition\(0.0000, 0.0000, 0.0, 0.0\)","SetWorkpieceSetupPosition(5.0000, 5.0000, 0.0, 0.0)"
        } | Set-Content $destination_file

(Get-Content $original_file) | Foreach-Object {
    $_ -replace "SetApproachStrategy\(true, false, -1\)","SetApproachStrategy(false, true, 2)"
    } | Set-Content $destination_file

(Get-Content $original_file) | Foreach-Object {
    $_ -replace "SetRetractStrategy\(true, false, -1, 0\)","SetRetractStrategy(false, true, 2, 0)"
    } | Set-Content $destination_file

$Ergaenzung = @'
CreateNullOperation("Wegfahrschritt", 2000.0000, 0.0000, 1);
ResetPneumaticHood();
ResetApproachStrategy();
ResetRetractStrategy(); 
'@

$ReplacedContent[0..($ReplacedContent.Length - 6)] + 
    $Ergaenzung + 
    $ReplacedContent[($ReplacedContent.Length - 5)..($ReplacedContent.Length)] | 
        Set-Content -Path $destination_file -Force

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Warum nimmst Du nicht einfach meinen Code und versuchst zu verstehen, was er tut? Du führst z.B. mehr oder weniger die gleiche Schleife 3 mal aus, nimmst dafür aber jedes mal die Original-Datei als Grundlage und schreibst jedes mal die Ziel-Datei neu. Das dürfte eigentlich nicht funktionieren.

Es wäre effizienter, alle Änderungen in einer Schleife nacheinander durchzuführen.

Ich schreibe in meinem Script die Änderungen mit dem Parameter -OutVariable erst mal temporär in eine Variable. Diese benutze ich dann zum Schluss dazu, dieErgänzung einzufügen. Da Du die Variable nicht benutzt, kann es so nicht funktionieren. Lies einfach Dein Destination-File nochaml mittels Get-Content ein und füge die Ergänzung auf die gleiche Weise wie ich hinzu.

 

Weißt Du was ein Help-Vampire ist?  ;-)

 

Ich will ja nicht dran Schuld sein, wenn sich jemand die Pulsadern eröffnet ....  :aha2:

 

Um meinen Code-Vorschlag quick & dirty um die letzten beiden zusätzlichen Ersetzungen zu erweitern, musst Du nur eine einzige Zeile ändern ... und zwar das hier

else {
    $_
}

 ....  in das hier ...

else {
    $_.Replace("SetApproachStrategy(true, false, -1)", "SetApproachStrategy(false, true, 2)").Replace("SetRetractStrategy(true, false, -1, 0)", "SetRetractStrategy(false, true, 2, 0)")
}

... noch als Erklärung: Der -replace Operator arbeitet mit regulären Ausdrücken. Die String-Methode .Replace() dagegen arbeitet mit direkten String-Ersetzungen. Der zu ersetzende String muss also genau so aussehen, wie in der Methode angegeben.

bearbeitet von BOfH_666

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

Werbepartner:



×