Powershell + Batch Skript kombiniert

Mitglied: mschaedler1982

mschaedler1982 (Level 1) - Jetzt verbinden

13.06.2014, aktualisiert 16.06.2014, 3694 Aufrufe, 11 Kommentare, 2 Danke

Hallo zusammen.

Ich habe hier zwei Skripte (Powershell + Batch Skript)

Die Batch Datei: (Zu dieser Datei muss ich nicht viel sagen, die Batch Datei ruft das unten aufgeführte Powershell Skript auf)

powershell C:\ProgramData\procad\NDF_Batch\createSTP.ps1 %1 %2 .CATpart
start /wait C:\ProgramData\procad\NDF_Batch\sleep.exe 30

Hier das funktionierende Powershell Skript.

Erklärung: Dieses Skript konvertiert Catia native Daten in eine STP Datei. Je nach Größe der Baugruppe / Part dauert der Konvertierungsprozess länger oder mal weniger lang. Erfahrungsgemäß kommen wir ganz gut
hin mit den 30 Sekunden sleep in der Batch Datei. In der Regel dauert es aber nicht so lange.

Was ich nun gerne hätte: Dieses Sleep in der Batch Datei hätte ich gerne im Powershell integriert. Das bedeutet das Skript sollte prüfen ob im Zielpfad eine *.STP Datei vorhanden ist. Wenn nicht soll er das jede weitere Sekunde testen und das maximal 300 Sekunden lang. Ist bis zu diesem Zeitpunkt keine STP Datei vorhanden soll der Konvertierungsprozess abgebrochen werden. Kann das hier umgesetzt werden?

Danke!!!
Mitglied: mschaedler1982
13.06.2014 um 14:21 Uhr
Das Ziel Verzeichnis lautet. C:\catiawork\NdfWork\67227_NdfWork\ wobei "67227" eine variable ist.
Bitte warten ..
Mitglied: colinardo
13.06.2014, aktualisiert um 22:36 Uhr
Hallo mschaedler1982,
bitte benutze Code-Tags zum Posten deines Powershell-Codes ansonsten gehen hier wichtige Sonderzeichen verloren und wir können dir nicht ordentlich helfen. Merci.

Insgesamt könnte das dann Beispielsweise so aussehen:
Das Beispiel geht jetzt davon aus das ein File erzeugt wurde wenn der Prozess sich ordentlich beendet hat, ohne prüfen auf Vorhandensein des Files, das musst du noch näher spezifizieren:
Das Ziel Verzeichnis lautet. C:\catiawork\NdfWork\67227_NdfWork\ wobei "67227" eine variable ist.
woher bekomme ich diese "Variable" ?

Grüße Uwe
Bitte warten ..
Mitglied: mschaedler1982
13.06.2014 um 20:04 Uhr
Hallo Uwe.

Zunächst mal Danke für deine Benühungen!

Die Variable ist eine Projektnummer und kommt aus unserem PDM System, die quasi dieses Verzeichnis temporär 67227_NdfWork erstellt. Nach Konvertierung wird dieses Verzeichnis wieder gelöscht.

Ich habe jetzt mal dein Skript getestet. Ich laufe hier immer auf Fehler. Meines erachtens läuft das Powershell Skript viel zu schnell durch es wartet keine 300 Sekunden. Es erscheint gleich Konvertierung abgeschlossen, obwohl noch keine STP Datei erzeugt worden ist.

Was & Wie habe ich getestet:

1. Dein Skript: In der Batch Datei sleep aktiv gelassen -> Fehler
2. Dein Skript: In der Batch Datei sleep auskommentiert -> Fehler
3. Original Powershell: In der Batch Datei sleep aktiv gelassen -> Fehler
4. Original Powershell: In der Batch Datei Sleep auskommentiert - > Fehler
5. Original Powershell: In der Batch Datei Sleep von 30 auf 120 Sekunden erhöht. -> Erfolgreich

Wo hast du denn in dem Powershelll Skript definiert das er auf die STP Datei warten soll bzw prüft ob die STP nun vorhanden ist?
Bitte warten ..
Mitglied: colinardo
13.06.2014, aktualisiert um 20:21 Uhr
hatte noch einen Fehler beim Aufruf der exe drin, jetzt müsste es laufen, kann es aber gerade nicht testen, da ich auf dem Smartphone schreibe.

Die überprüfung ob das File vorhanden ist oder nicht hatte ich noch nicht eingebaut da mir die Infos zum Verzeichnis fehlten, hatte ich ja oben geschrieben.
Das Script geht im Moment davon aus, wenn der Prozess beendet wurde auch ein File erzeugt wurde und wenn der Prozess nicht innerhalb von 5 Min. beendet ist wird der Prozess gestoppt.

baue die morgen noch den Check zusätzlich mit ein...

Schönen Abend
Uwe
Bitte warten ..
Mitglied: colinardo
13.06.2014, aktualisiert um 21:17 Uhr
noch eine Info die nicht unwichtig wäre:
Wie ist das Verhalten des Programms, beendet sich das direkt wenn du es in einer Shell startest und läuft die Konvertierung dann durch ein anderes Programm im Hintergrund oder bleibt die Eingabe so lange deaktiviert bis es erfolgreich konvertiert hat ?
Und wie lange liegt das konvertierte File in dem o.g. Ordner, wenn du sagst das es nach Beendigung des Programms sofort wieder gelöscht wird ? Irgenwie ist mir das Verhalten noch nicht so ganz klar, wäre es hier nicht besser den Zielpfad zu überprüfen wo das File letztendlich landet anstatt den temporären Pfad.
Klär mich auf :-) face-smile Wenn ich weiß wie der Hase läuft bekommst du auch was funktionierendes, denn normalerweise poste ich nur getesteten Code.
Bitte warten ..
Mitglied: mschaedler1982
13.06.2014 um 21:20 Uhr
Hallo Uwe.

Die C:\coretechnologie2013\evolution64\evolution.exe" läuft im Hintergrund weiter und erstellt eine STP Datei. Das Powershell stößt diesen Konvertierungsprozess an und im Hintergrund wird weiter konvertiert. (das nehm ich stark an, generell geht es ja)

Das seh ich daran das die Batch Datei bereits den Sleep einleitet. Und nach 30 Sekunden schließt sich die Batch Datei und sollte nicht innerhalb dieser 30 Sekunden die STP Datei erzeugt worden sein. Läuft mein Monitor auf Fehler "Fehler des Konvertierungsprozess" hier hab ich dann die Möglichkeit den sleep zu erhöhen. Je nach Baugruppengröße kann der Konvertierungsprozess länger dauern. Also folgendermaßen die STP Datei wird erzeugt und bevor sie in das Verzeichnis geschrieben wird, wird sie noch repariert. Das findet alles hier statt. ->

start-process "C:\coretechnologie2013\evolution64\evolution.exe" -ArgumentList "-batch C:\coretechnologie2013\evolution64\scripts\convert.scp $newFileFullname ProEngineer Step $Targetfile C:\catiawork\3D_Evolution\test1.log" -Wait

Deine letzte Frage habe ich nicht genau verstanden. Im Vordergrund ist nur die Batch Datei, eine Eingabe ist nicht möglich.
Bitte warten ..
Mitglied: mschaedler1982
13.06.2014 um 21:23 Uhr
Wenn die 30 Sekunden nachdem sleep rum sind wird, das erzeugte Verzeichnis gelöscht. (Zahl_NdfWork)

Ist die STP Datei erzeugt wird sie ins PDM System geladen.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 13.06.2014, aktualisiert 16.06.2014
Also hier mal der Zwischenstatus so wie ich dich verstanden habe (habe es für dich etwas verständlicher in einer einfacheren Variante umgeschrieben):

Variante A: Für den Fall das der Prozess "evolution.exe" selber die Konvertierung durchführt und sich nicht selber sofort beendet ginge diese Variante:
Variante B: Sollte der Prozess sich jedoch sofort beenden (deiner Beschreibung nach vermute ich das) und ein anderer Prozess macht die weitere Konvertierung ginge es hiermit:
(Hier wäre dann noch zu klären, welch anderer Prozess die tatsächliche Konvertierung macht damit dieser entsprechend durch das Script beendet werden kann)
Bitte warten ..
Mitglied: mschaedler1982
15.06.2014, aktualisiert um 23:34 Uhr
Hallo Uwe.

Danke für die Überarbeitung! Ich habe nun beide Skripte getestet. Es geht bei beiden nicht. Die evolution.exe läuft solange bis die Konvertierung & Reparatur durchgelaufen sind. Sprich Skript 1 kommt nur noch in Frage oder?

Was mir auffällt wenn ich Skript 1 teste dann ist die evolution.exe nur ganz kurz in den Prozessen zu finden. Wenn ich das Original Skript verwende dann ist die evolution.exe solange unter den Prozessen zu finden bis er fertig ist.

Bei Skript 1 erscheint folgende Fehlermeldung:
Das Skript wartet keine 300 Sekunden, ist wahrscheinlich durch den Fehler. Welche Informationen brauchst du noch von mir?
Kurz zur erläuterung was ich sehe: Powershell Skript startet. Die Uhrzeit läuft vlt 2 Sekunden runter, in der Zeit ist auch die evolution.exe unter den Prozessen zu finden und dann folgt die Fehlermeldung.

Danke & gruss

mschaedler1982
Bitte warten ..
Mitglied: colinardo
16.06.2014, aktualisiert um 09:16 Uhr
ach da fehlte nur die einleitende eckige Klammer [ für den Typ der Variablen in Zeile 7, sorry.
Bitte warten ..
Mitglied: mschaedler1982
16.06.2014 um 09:38 Uhr
Nun funktioniert es! Danke, danke Uwe!!
Bitte warten ..
Heiß diskutierte Inhalte
Microsoft
STRG + ALT + ENTF
TezzlaVor 1 TagAllgemeinMicrosoft12 Kommentare

Mahlzeit zusammen, wir haben gerade im Kollegenkreis über Sinn und Unsinn der Sperrbildschirmentriegelung STRG + ALT + ENTF unter Win10 diskutiert. Mich würde hierzu ...

Video & Streaming
Streamingplattform mit eigenen Servern
gelöst icegetVor 1 TagFrageVideo & Streaming6 Kommentare

Hallo liebe Community, ich würde gerne via Amazaon AWS (oder andere Cloudanbietern) mehrere Serverinstanzen (Streaming) starten, um z.B. 2000 Personen den selben Stream den ...

Hardware
Outdoor LAN sichern mit oder ohne Fritzbox Verständnis Frage
bluescreenVor 1 TagFrageHardware15 Kommentare

Hallo zusammen, ich habe die letzten Stunden schon viel hier gelesen, stehe aber ein wenig auf dem Schlauch, wie und wo ich weiter suchen ...

Windows Server
Nutzer als lokaler Admin in Windows Server 2019
hanheikVor 1 TagFrageWindows Server6 Kommentare

Hallo, in SBS 2011 konnte ich ganz einfach einen Nutzer als lokalen Admin einstellen. Windows fragte dann, für welchen Rechner; Rechner auswählen; fertig! In ...

Windows Netzwerk
Telefone im Netzwerk bekannt machen
jannik0205Vor 22 StundenFrageWindows Netzwerk13 Kommentare

Hallo Zusammen, In unserem Unternehmen gibt es eine Telefonanlage mit eigenem Telefonienetz (192.168.5.X). Schließe ich ein Telefon an eine Netzwerkdose, bekommt es vom DHCP- ...

Windows 10
Windows 7 pro Lizenz nutzen für Windows 10
lukas0209Vor 17 StundenFrageWindows 1013 Kommentare

Hallo Community, ich versuche seit einigen Wochen unser Netzwerk von Windows Server 2008 R2 Standard auf Windows Server 2016 Essentials um, welches eine städtische ...

Datenschutz
Übergang von "Sorgfaltspflicht" im Datenschutz
ukulele-7Vor 1 TagFrageDatenschutz7 Kommentare

Hallo zusammen, mir ist eine, zugegeben eher juristische, Frage in den Sinn gekommen. In unserer Branche arbeiten wir mit sensiblen, personenbezogenen Daten die natürlich ...

Windows Server
Remotedesktop Lizenzzierungsserver
Leffe69Vor 1 TagFrageWindows Server11 Kommentare

Hallo! Ich habe zwei Win Server ohne AD: Win 2019 Standard - Auf diesem sind die RDS Zugriffslizenzen installiert. Win 2008 R2 - Dieser ...