teslajr
Goto Top

CMD: programfiles Klammer wird nicht angezeigt

Hallo Leute

bei Windows 7 wird die letzte Klammer nicht angezeigt und somit ist der Pfad nicht zu nutzen.
Muss man diese Variable besonders behandeln?


IF %PROCESSOR_ARCHITECTURE%==x86 (
set programpath=%programfiles%
) ELSE (
set programpath=%programfiles(x86)%
)

echo %programpath% :: c:\program files (x86


Danke & Gruss

Content-ID: 233831

Url: https://administrator.de/contentid/233831

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

jsysde
Lösung jsysde 27.03.2014 aktualisiert um 14:43:47 Uhr
Goto Top
Mahlzeit.

Ich tät's auf Verdacht mal mit Anführungszeichen versuchen, "%programfiles(x86)".

Cheers,
jsysde
colinardo
Lösung colinardo 27.03.2014 aktualisiert um 14:43:49 Uhr
Goto Top
Zur Info: Anhand der Prozessorarchitektur-Variable kannst du nicht auf das verwendete Betriebssystem (32/64Bit) schließen !!
das machst du besser so:
for /f "tokens=2 delims==" %%a in ('wmic os get OSArchitecture /format:list ^| findstr /i "OSArchitecture"') DO set arch=%%a  
if "%arch%" == "64-bit" (  
   set "programpath=%programfiles(x86)%"  
) else (
   set "programpath=%programfiles%"     
)

Grüße Uwe
teslajr
teslajr 27.03.2014 um 14:39:49 Uhr
Goto Top
Hallo

Das mit den Anführunszeihen funktioniert leider nicht.

wegen Prozessorarchitekur, wieso meinst du das?
weil x86 ist immer 32bit, und die verschidenen 64bit prozesorren berücksichtige ich nicht explizit, da es verschiedene gibt.

gruss
Snowman25
Lösung Snowman25 27.03.2014 aktualisiert um 14:51:12 Uhr
Goto Top
Hallo @teslajr,

wie @jsysde bereits schrieb: Mach Anführungsstriche drum herum.
Dass die Klammer im ECHO nicht mehr rauskommt liegt daran, dass %ProgramFiles(x86) zu C:\Program Files (x86) geparst wird. Die schließende Klammer von x86) wird dabei aber als die schließende Klammer des ELSE-Blocks interpretiert.
Deshalb sollten Zeile 2 und 4 so aussehen:
set programpath="%programfiles%"  
set programpath="%programFiles(x86)%"  

Gruß,
@Snowman25

€dit: Insgesamt wäre aber eine Abfrage besser, die testet, ob die x86-Pfade gesetzt sind:
REM Wenn %ProgramFiles(x86) leer bzw. ungesetzt ist (32-Bit), wird
REM programpath auf %ProgramFiles% gesetzt. Ansonsten (64-bit) auf
REM %ProgramFiles(x86).

IF "x%ProgramFiles(x86)%"=="x" (  
	SET programpath="%ProgramFiles%"  
) ELSE (
	SET programpath="%ProgramFiles(x86)%"  
)
colinardo
colinardo 27.03.2014 aktualisiert um 14:44:02 Uhr
Goto Top
Zitat von @teslajr:
wegen Prozessorarchitekur, wieso meinst du das?
Wie der Name schon sagt wird hier der Prozessor-Fähigkeit genannt nicht die Bittnes des Betriebssystems.
teslajr
teslajr 27.03.2014 um 14:46:58 Uhr
Goto Top
Danke, habe verstanden was gemeint wurde, es funktioniert problemlos.

Vielen Dank & Gruss