Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX
  Variablen in start_nxmanager.bat setzen mit If-Abfrage

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
  
Solid Edge 2025 First Look Online-Event 14.11.2025, eine Pressemitteilung
Autor Thema:  Variablen in start_nxmanager.bat setzen mit If-Abfrage (2399 mal gelesen)
Markus_30
Moderator
CAx-Architect




Sehen Sie sich das Profil von Markus_30 an!   Senden Sie eine Private Message an Markus_30  Schreiben Sie einen Gästebucheintrag für Markus_30

Beiträge: 5563
Registriert: 21.03.2005

Windows 10 (21H2)
NX 2007 Series

erstellt am: 12. Jun. 2012 10:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

habe ein seltsames Phänomen. Und zwar möchte ich für NX im managed Mode eine Startdatei erstellen bzw. modifizieren. Diese heißt "start_nxmanager.bat". Funktioniert so weit auch gut, aber mit einer einfachen Wenn-Abfrage habe ich Probleme. Folgendes habe ich in die Startdatei geschrieben:

if /i "%BEDINGUNG%" == "WERT0" (
set VARIABLE=XXX
) else (
set VARIABLE=YYY
)


In den Umgebungsvariablen ist diese %BEDINGUNG% auch auf WERT0. Dann möchte ich meinen, dass meine VARIABLE auf XXX stehen muss. Tut sie aber nicht, sie steht auf YYY.

Wenn ich ein cmd-Fenster öffne, und die Wenn-Abfrage von oben reinkopiere, anschließend Enter drücke und danach nochmal "set" schreibe und Enter drücke, dann wird meine Variable aber mit XXX aufgeführt. Das wäre so weit korrekt. Aber nach Start von NX im managed Mode steht die Variable auf YYY (sagt die Protokolldatei).

Wenn ich in meine Abfrage so weit ändere, dass die Ausgangsbedingung nicht mehr erfüllt ist und somit die else-Bedingung greifen müsste, dann greift aber die andere Bedingung.

Jetzt bin ich ein wenig verwirrt... Ich kann definitiv ausschließen, dass die Variable von einer nachfolgend zu verarbeitenden Datei überschrieben wird. Könnt ihr mir helfen, da ich nicht weiß, was ich jetzt tun soll? Würde mich sehr freuen.

------------------
Gruß   

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

uger
Mitglied
CADler & Kinematiker


Sehen Sie sich das Profil von uger an!   Senden Sie eine Private Message an uger  Schreiben Sie einen Gästebucheintrag für uger

Beiträge: 1131
Registriert: 25.02.2003

NX2015
WIN10 64Bit

erstellt am: 12. Jun. 2012 12:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Markus_30 10 Unities + Antwort hilfreich

Ich habe einmal in einer Shell help if eingegeben. Da ist dann statt der == von eq die Rede. Schon probiert?

uger

------------------

Deine Wahrnehmung bestimmt deine Realität!
NDS

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Markus_30
Moderator
CAx-Architect




Sehen Sie sich das Profil von Markus_30 an!   Senden Sie eine Private Message an Markus_30  Schreiben Sie einen Gästebucheintrag für Markus_30

Beiträge: 5563
Registriert: 21.03.2005

Windows 10 (21H2)
NX 2007 Series

erstellt am: 12. Jun. 2012 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo uger,

Zitat:
Original erstellt von uger:
...Da ist dann statt der == von eq die Rede...

vielen Dank für den Tip. Habe "==" durch "eq" ersetzt (natürlich ohne die "). Ergebnis: Beim Startversuch geht nur kurz die shell auf, schließt sich aber sofort wieder und nix passiert. Hatte kurz auch eine "pause" eingebaut, damit ich sehe, ob was in der shell stand. Stand aber nix.

Natürlich könnte ich einfach die "Antworten" auf die Abfrage "umdrehen", das würde funktionieren, so wie ich es will.... Aber das kann's ja wohl wirklich nicht sein.

------------------
Gruß 

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas-Z
Mitglied
PLM-Administration


Sehen Sie sich das Profil von Thomas-Z an!   Senden Sie eine Private Message an Thomas-Z  Schreiben Sie einen Gästebucheintrag für Thomas-Z

Beiträge: 76
Registriert: 22.02.2011

erstellt am: 12. Jun. 2012 12:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Markus_30 10 Unities + Antwort hilfreich

Hallo uger,

vielleicht funktioniert das:

set VARIABLE=YYY
if "%BEDINGUNG%" == "WERT0" set VARIABLE=XXX

------------------
Gruß Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Michael R
Mitglied
Maschinenbau, ehemals IT


Sehen Sie sich das Profil von Michael R an!   Senden Sie eine Private Message an Michael R  Schreiben Sie einen Gästebucheintrag für Michael R

Beiträge: 50
Registriert: 04.06.2003

Win10
NX 10.0.2.6

erstellt am: 12. Jun. 2012 12:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Markus_30 10 Unities + Antwort hilfreich

Also meine Hilfe sagt daß die Funktion "EQU" für equal steht und nicht "EQ". Vielleicht liegts daran.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Markus_30
Moderator
CAx-Architect




Sehen Sie sich das Profil von Markus_30 an!   Senden Sie eine Private Message an Markus_30  Schreiben Sie einen Gästebucheintrag für Markus_30

Beiträge: 5563
Registriert: 21.03.2005

Windows 10 (21H2)
NX 2007 Series

erstellt am: 12. Jun. 2012 12:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Thomas,

vielen Dank für den Tip. Du wirst es nicht glauben: Funktioniert genauso wenig. Die "Antworten" bleiben "vertauscht".

------------------
Gruß 

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Markus_30
Moderator
CAx-Architect




Sehen Sie sich das Profil von Markus_30 an!   Senden Sie eine Private Message an Markus_30  Schreiben Sie einen Gästebucheintrag für Markus_30

Beiträge: 5563
Registriert: 21.03.2005

Windows 10 (21H2)
NX 2007 Series

erstellt am: 12. Jun. 2012 12:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Michael,

auch an dich ein Dankeschön.

Zitat:
Original erstellt von Michael R:
Also meine Hilfe sagt daß die Funktion "EQU" für equal steht und nicht "EQ". Vielleicht liegts daran.

Damit startet NX zwar, die "Antworten" bleiben aber ebenfalls "vertauscht".

------------------
Gruß 

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Markus_30
Moderator
CAx-Architect




Sehen Sie sich das Profil von Markus_30 an!   Senden Sie eine Private Message an Markus_30  Schreiben Sie einen Gästebucheintrag für Markus_30

Beiträge: 5563
Registriert: 21.03.2005

Windows 10 (21H2)
NX 2007 Series

erstellt am: 12. Jun. 2012 13:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nochmal,

hab's jetzt auch auf einer anderen Maschine ausprobiert, da funktionierts... Also liegt's wohl an meinem Rechner... Was könnte das wohl sein? 

------------------
Gruß 

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hermes
Mitglied



Sehen Sie sich das Profil von Hermes an!   Senden Sie eine Private Message an Hermes  Schreiben Sie einen Gästebucheintrag für Hermes

Beiträge: 311
Registriert: 08.09.2002

erstellt am: 12. Jun. 2012 13:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Markus_30 10 Unities + Antwort hilfreich

Hallo Markus

ich vermute da einen Zusammenhang mit der verzögerten Erweiterung von Umgebungsvariablen

siehe dazu  Online Help

setlocal /?
set /?

====================================================================================
setlocal /?

Startet die Begrenzung des Gültigkeitsbereiches von Änderungen.
Änderungen der Umgebung nach SETLOCAL sind nur auf die Batchdatei bezogen.
Um die ursprünglichen Einstellungen wiederherzustellen, muss der Befehl
ENDLOCAL ausgeführt werden. Beim Erreichen des Endes einer Batchdatei wird ein
impliziertes ENDLOCAL für jegliche ausstehende SETLOCAL-Befehle ausgeführt.

SETLOCAL

Mit den Befehlserweiterungen wird der SETLOCAL-Befehl folgendermaßen verändert:
        ENABLEEXTENSIONS / DISABLEEXTENSIONS
            Aktiviert bzw. deaktiviert Befehlserweiterungen. Geben Sie
            CMD /? ein, um weitere Informationen zu erhalten.
        ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
            Aktiviert bzw. deaktiviert die verzögerte Erweiterung von
            Umgebungsvariablen. Geben Sie SET /? ein, um weitere Informationen
            zu erhalten.
Diese Änderungen sind bis zum nächsten ENDLOCAL-Befehl gültig,
und zwar unabhängig von vorherigen Einstellungen.

Der SETLOCAL-Befehl legt einen ERRORLEVEL fest, wenn ein Argument angegeben
wird. Dieser ist gleich Null für eines der beiden gültigen Argumente und
gleich Eins andernfalls. Das kann man in Batchprogrammen verwenden, um
festzustellen, ob die Befehlserweiterungen zur Verfügung stehen. Siehe dazu
auch folgendes Beispiel:

    VERIFY OTHER 2>nul
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo  keine Befehlserweiterungen

Dieses Verfahren kann man verwenden, weil in älteren Versionen von CMD.EXE der
SETLOCAL-Befehl keinen ERRORLEVEL festlegt. Der VERIFY-Befehl mit einem
ungültigen Argument initialisiert den Wert für den ERRORLEVEL mit ungleich
Null.

====================================================================================

Ausschnitt aus
set /?

Die Unterstützung der verzögerten Erweiterung von Umgebungsvariablen wurde
hinzugefügt. Standardmäßig ist sie deaktiviert. Sie kann mit der
Befehlszeilenoption /V von CMD.EXE aktiviert/deaktiviert werden.
Siehe CMD /?

Die verzögerte Erweiterung von Variablen verbessert die Möglichkeiten der
Variablenerweiterung. Bisher wurden die Variablen beim Lesen des Texts, und
nicht bei dessen Ausführung, erweitert. Das folgende Beispiel zeigt ein
Problem, das dabei auftritt:

    set VAR=vorher
    if "%VAR%" == "vorher" (
        set VAR=nachher;
        if "%VAR%" == "nachher" @echo Es funktioniert!
    )

Die Meldung würde nie angezeigt, weil %VAR% in beiden IF-Befehlen
beim Lesen des ersten IF-Befehls erweitert wird, weil es logisch zu diesem
gehört. Daher vergleicht der zweite IF-Befehl "vorher" mit "nachher" was nie
gleich sein kann. Auch das folgende Beispiel funktioniert nicht wie erwartet:

    set LISTE=
    for %i in (*) do set LISTE=%LISTE% %i
    echo %LISTE%

Es wird KEINE Liste der Dateien im aktuellen Verzeichnis erstellt, stattdessen
erhält LISTE den Namen der letzten Datei als Wert. Dies ist der Fall, weil
%LISTE% nur einmal beim Lesen des IF-Befehls erweitert wird. Zu diesem
Zeitpunkt ist LISTE leer.
Die FOR-Schleife, die tatsächlich ausgeführt wird, lautet:

    for %i in (*) do set LISTE= %i

Hiermit wird der Variablen LISTE immer wieder der letzte Dateiname
zugewiesen.

Die verzögerte Erweiterung von Umgebungsvariablen erlaubt es, eine
Umgebungsvariable, unter Verwendung eines weiteren Zeichens (dem
Ausrufezeichen), zur Laufzeit zu erweitern. Mit aktivierter verzögerter
Erweiterung von Umgebungsvariablen können obige Beispiele wie folgt geschrieben
werden:

    set VAR=vorher
    if "%VAR%" == "vorher" (
        set VAR=nachher
        if "!VAR!" == "nachher" @echo Es funktioniert!
    )

    set LISTE=
    for %i in (*) do set LISTE=!LISTE! %i
    echo %LISTE%
====================================================================================

------------------
mit freundlichen Grüssen
Toni

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Markus_30
Moderator
CAx-Architect




Sehen Sie sich das Profil von Markus_30 an!   Senden Sie eine Private Message an Markus_30  Schreiben Sie einen Gästebucheintrag für Markus_30

Beiträge: 5563
Registriert: 21.03.2005

Windows 10 (21H2)
NX 2007 Series

erstellt am: 12. Jun. 2012 14:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo nochmal,

habe es auch noch auf einer anderen Maschine probiert, da funktionierts auch nicht. Auf anderen Maschinen hingegen schon. Sagen wir, die Quote ist so ca. 50:50. Nicht gerade berauschend...

hab's jetzt anders gemacht. Statt eine Variable zu überprüfen, die bei der Installation des Softwarepaketes angelegt wird, prüfe ich nun, ob ein bestimmtes Verzeichnis dieser Installation existiert. In Abhängigkeit davon setze ich dann meine Variablen. Funktioniert so weit prima und auf allen oben genannten Maschinen führt es zum gleichen Ergebnis.

Das ist jetzt mein "Workaround" oder zu gut deutsch: Rumgepopel...

Danke euch allen für eure Hilfe.

------------------
Gruß 

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz