Batch Systemvariablen - unterscheiden sich pro User?
Guten Morgen zusammen,
ein Mitarbeiter aus unserem Entwicklungsteam ist momentan dabei in einem Batch Script Dateiendung mit einem Programm zu assoziieren und ist dann bei der Ausführung des Scripts auf einen merkwürdigen Fehler gestoßen.
Nämlich gibt dieses Batch Skript, auf dem selben Computer, zwei unterschiedliche Werte aus wenn man die Systemvariable %CommonProgramFiles% benutzt. Der einzige unterschied bei der Ausführung, es war ein anderer User angemeldet.
Die Ausgabe war einmal "C:\Program Files (x86)\Common Files" und dann wie gewünscht "C:\Program Files\Common Files".
Ist das ein "Intended Feature" und ich versteh nur den Sinn dahinter nicht, oder stimmt da wirklich etwas nicht?
Hier sind noch ein paar Systeminformationen.
Hostname: SIN5805
Betriebssystemname: Microsoft Windows 10 Pro
Betriebssystemversion: 10.0.19042 Nicht zutreffend Build 19042
Betriebssystemhersteller: Microsoft Corporation
Betriebssystemkonfiguration: Mitglied der Domäne/Arbeitsgruppe
Grüße
Florian
ein Mitarbeiter aus unserem Entwicklungsteam ist momentan dabei in einem Batch Script Dateiendung mit einem Programm zu assoziieren und ist dann bei der Ausführung des Scripts auf einen merkwürdigen Fehler gestoßen.
ASSOC .sldprt=SLDPRT-Datei
FTYPE SLDPRT-Datei="%CommonProgramFiles%\eDrawings2023\eDrawings.exe" "%%1"
Die Ausgabe war einmal "C:\Program Files (x86)\Common Files" und dann wie gewünscht "C:\Program Files\Common Files".
Ist das ein "Intended Feature" und ich versteh nur den Sinn dahinter nicht, oder stimmt da wirklich etwas nicht?
Hier sind noch ein paar Systeminformationen.
Hostname: SIN5805
Betriebssystemname: Microsoft Windows 10 Pro
Betriebssystemversion: 10.0.19042 Nicht zutreffend Build 19042
Betriebssystemhersteller: Microsoft Corporation
Betriebssystemkonfiguration: Mitglied der Domäne/Arbeitsgruppe
Grüße
Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8134908411
Url: https://administrator.de/contentid/8134908411
Ausgedruckt am: 24.11.2024 um 02:11 Uhr
8 Kommentare
Neuester Kommentar
Moin,
komisch, auf meinem Win10-System gibt es die Variable %COMMONFILES% nicht - meinst du vielleicht eine von diesen?
Gruß
TA
komisch, auf meinem Win10-System gibt es die Variable %COMMONFILES% nicht - meinst du vielleicht eine von diesen?
TwistedAir>set | findstr "Common"
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
Gruß
TA
Die Ausgabe war einmal "C:\Program Files (x86)\Common Files" und dann wie gewünscht "C:\Program Files\Common Files".
Dann hat man die CMD bei einem User aus C:\windows\SysWOW64 und das andere mal aus C:\windows\system32 ausgeführt.Stichwort Filesystem Redirection bei 32- und 64bit Prozessen!
https://learn.microsoft.com/de-de/windows/win32/winprog64/file-system-re ...
Gruß siddius
Servus @DarkZoneSD
2 Dinge zu diesem und zukünftige Threads:
Für die Zukunft:
Es ist sehr löblich den unterstützenden User mit einem "gelöst" zu markieren. Das gleiche musst du aber auch bei dir selbst machen. Andernfalls wird deine Frage nicht als gelöst markiert. Siehe:
Wie kann ich einen Beitrag als gelöst markieren?
Ergänzend zu deiner Frage:
Wie @7907292512 schon geschrieben hat kommt es darauf an ob einen Variable über eine 32-Bit-CMD oder eine 64-Bit-CMD abgefragt wird. Das ganze nennt sich dann "process bitness" das ist nicht nur bei der CMD so, sondern bei jedem Prozess der unter Windows läuft.
Alle Variablen kannst du mit dem Befehl...
...abfragen
Je nachdem ob du die C:\windows\SysWOW64\cmd.exe (32-Bit) oder C:\windows\system32\cmd.exe (64-Bit) verwendest, wirst du sehen, dass sich das Ergebnis unterscheidet.
Wenn du Windowstaste => cmd => Entertaste eingibst, wählt Windows immer den "systemnähesten" Prozess, bei einem 64-Bit OS also einen 64-Bit-Prozess, falls verfügbar. Nicht immer sind 32- und 64-Bit-Programme parallel vorhanden.
Grüße!
2 Dinge zu diesem und zukünftige Threads:
Für die Zukunft:
Es ist sehr löblich den unterstützenden User mit einem "gelöst" zu markieren. Das gleiche musst du aber auch bei dir selbst machen. Andernfalls wird deine Frage nicht als gelöst markiert. Siehe:
Wie kann ich einen Beitrag als gelöst markieren?
Ergänzend zu deiner Frage:
Wie @7907292512 schon geschrieben hat kommt es darauf an ob einen Variable über eine 32-Bit-CMD oder eine 64-Bit-CMD abgefragt wird. Das ganze nennt sich dann "process bitness" das ist nicht nur bei der CMD so, sondern bei jedem Prozess der unter Windows läuft.
Alle Variablen kannst du mit dem Befehl...
Net use
Je nachdem ob du die C:\windows\SysWOW64\cmd.exe (32-Bit) oder C:\windows\system32\cmd.exe (64-Bit) verwendest, wirst du sehen, dass sich das Ergebnis unterscheidet.
Wenn du Windowstaste => cmd => Entertaste eingibst, wählt Windows immer den "systemnähesten" Prozess, bei einem 64-Bit OS also einen 64-Bit-Prozess, falls verfügbar. Nicht immer sind 32- und 64-Bit-Programme parallel vorhanden.
Grüße!
Zitat von @DarkZoneSD:
Zumindest hatte ich deinen Beitrag bis vorhin nicht als gelöst in der Liste 🤷♂️🤷♂️Servus @DarkZoneSD
MoinAndernfalls wird deine Frage nicht als gelöst markiert. Siehe:
Ist das so? Ich könnte schwören ich habe das nie anders gemacht und meine alten Threads wurden als gelöst markiert.. 🤔Alle Variablen kannst du mit dem Befehl...
...abfragen
Sicher mit Net use? Ich dachte der wird nur zur Rescourcen Anbindung / Trennung genutzt.Net use
set
Kommt davon, wenn man 4 Sachen gleichzeitig macht und noch schnell nebenbei am Mobile schreibt 🤦♂️
EDIT:
Und weil es ja um die Common... ging: