Warum bleibt der Startprozess über die BCTSI_START.BAT beim Schritt 2/6 oder 3/6 hängen?
Problem
Der Start von Teamcenter, NX oder Solid Edge über die BCTSI-Shortcuts bleibt im Splashscreen bei Schritt 2/6 oder 3/6 hängen und die Programme können nicht gestartet werden.
Hintergrundinfos
Für die Log-Dateien von NX, Teamcenter etc. wird über die BCTSI_START.BAT ein Verzeichnis mit einem Zeitstempel angelegt, z.B. C:\BCTSI\log\nx\20250128040346
Um den Zeitstempel unabhängig von den Einstellungen für die Darstellung des Datums in Windows zu generieren, wurde bisher ein WMIC-Aufruf verwendet.
WMI (Windows Management Instrumentation) ist eine Programmierschnittstelle, mit der viele Aspekte von Windows-Betriebssystemen erfasst werden können. Dies reicht von der Hardware, über Betriebssystemeinstellungen, Performancedaten bis hin zu installierten Applikationen.
Die WMI Console (kurz WMIC) ist ein Kommando-Interpreter, der auf relativ einfache Weise Befehle an WMI übergeben kann, um zum Beispiel das aktuelle Datum mit Uhrzeit in einem einheitlichen Format abzufragen. Bisher wurde dazu im Startskript BCTSI_START.BAT folgender Aufruf verwendet:
wmic os get LocalDateTime
Seit Windows 11 24H2 wird das WMIC aber in Windows nicht mehr mit installiert, es muss manuell nachinstalliert werden. Teilweise kommt es auch durch Windows-Updates dazu, dass das WMIC in Windows 10 defekt ist. Das Ergebnis ist in beiden Fällen, dass der Zeitstempel nicht generiert werden kann und damit kann das Verzeichnis für die Log-Dateien nicht erstellt werden. Der Startprozess über die BCTSI_START.BAT bleibt dann hängen.
Um zu prüfen, ob das WMIC wirklich das Problem ist, in einer DOS-Box folgenden Befehl eingeben:
wmic os get LocalDateTime
Wenn WMIC funktioniert sollte so etwas als Antwort erscheinen:
LocalDateTime
20250218162450.762000+060
Dann ist nicht WMIC das Problem beim Start über die BCTSI_START.BAT!
Lösung: Timestamp über einen Powershell-Aufruf erstellen
In der BCTSI_START.BAT muss der alte WMIC-Aufruf durch den neuen Aufruf über die Powershell ersetzt werden. Der alte Aufruf sieht so aus:
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set BCTSI_TIMESTAMP=%%j
Den alten WMIC-Aufruf ersetzen durch diesen Powershell-Aufruf:
for /F "delims=" %%i IN ('POWERSHELL -COMMAND "(Get-Date).ToString('yyyyMMddHHmmss')"') DO SET "BCTSI_TIMESTAMP=%%i"
Die folgende Zeile muss dann auch deaktiviert oder gelöscht werden, da der Powershell-Aufruf schon einen fertig formatierten Zeitstsempel zurückliefert.
set BCTSI_TIMESTAMP=%BCTSI_TIMESTAMP:~0,4%%BCTSI_TIMESTAMP:~4,2%%BCTSI_TIMESTAMP:~6,2%%BCTSI_TIMESTAMP:~8,2%%BCTSI_TIMESTAMP:~10,2%%BCTSI_TIMESTAMP:~12,2%
Um zu kontrollieren, ob alles richtig funktioniert einfach im Ordner C:\BCTSI\log\nx oder C:\BCTSI\log_2025-01-20\4tier_tccs oder C:\BCTSI\log_2025-01-20\4tier prüfen, ob bei einem neuen Start ein Verzeichnis mit dem richtigen Zeitstempel erstellt wird. Der Zeitstempel setzt sich aus Jahr, Monat, Tag, Stunde und Minute zusammen und sieht für den 14.04.2025, 14:15 Uhr so aus:
C:\BCTSI\log_2025-01-20\4tier\202504141415
Bei Fragen oder Problemen wenden Sie sich bitte an den BCT Support.