BATCH - IF-Anweisungen Verwendung von Variablen für die Datei Pfad
Habe ich ein batch-Skript, ich glaube, mein Problem hat zu tun mit Klammern, aber ich bin mir nicht sicher, wie das zu umgehen,
Dies ist es
REM Detect if the OS is x86 or x64
IF DEFINED PROGRAMFILES(x86) (
REM x64
SET "_PROGRAMFILES=%PROGRAMFILES(x86)%"
GOTO MAIN_PROGRAM
) ELSE (
REM x86
SET "_PROGRAMFILES=%PROGRAMFILES%"
GOTO MAIN_PROGRAM
)
:MAIN_PROGRAM
SET "MY_EXE=%_PROGRAMFILES%\MYFOLDER\MYEXE.exe"
IF EXIST "%MY_EXE%" (
ECHO YES
) ELSE (
ECHO NO
)
Führen Sie diese auf x86 und das ist auch ok so, da der Pfad zu überprüfen ist C:\Program Files\MYFOLDER\MYEXE.exe
Führen Sie diese auf x64 und es Bomben aus "nicht erwartet, dass in dieser Zeit"
Ich bin mir ziemlich sicher, dass es hat zu tun mit dem Weg C:\Program Files (x86)\
Wie kann ich das umgehen (x86) - ist das das Problem
NEUE
REM Is the OS x86
IF "%PROCESSOR_ARCHITECTURE%" == "x86" (
SET "_PROGRAMFILES=%PROGRAMFILES%"
SET "_ARCH=x86"
ECHO CPU Architecture is: "%_ARCH%"
ECHO Program Files Directory is: "%_PROGRAMFILES%"
GOTO MAIN_PROGRAM
)
REM Is the OS AMD64
IF "%PROCESSOR_ARCHITECTURE%" == "AMD64" (
SET "_PROGRAMFILES=%PROGRAMFILES(x86)%"
SET "_ARCH=x86"
ECHO CPU Architecture is: "%_ARCH%"
ECHO Program Files Directory is: "%_PROGRAMFILES%"
GOTO MAIN_PROGRAM
)
GOTO ERROR_OS_ARCH
:ERROR_OS_ARCH
CLS
cWnd.exe /SHOW @
ECHO.
ECHO Error 100: Operating System Architecture not Supported. Contact your IT Department
ECHO.
EXIT /B
- durch die Art und Weise der genaue Fehler ist "\MYFOLDER\MYEXE.exe" ist nicht zu erwarten in dieser Zeit, der angibt, die variable %_PROGRAMFILES% leer ist? Ich fügte hinzu, ein "ECHO %_PROGRAMFILES% über die IF-Anweisung und zeigt es korrekt an. C:\Program Files (x86)
- Funktioniert einwandfrei bei mir auf Vista x64. Sieht alles gut aus, mit entsprechender Angebotserstellung, etc. Ist der gepostete code der genaue code oder ein Auszug, der vielleicht nicht immer auf die gleiche wie das original?
- Praktisch, dass hat bei mir unter Windows 7 SP1 auch auf Windows XP SP3.
- es ist einfach nur ein üben aus einem größeren script, ich werde tun, einige weitere Tests, und fügen Sie die vollständige Sache, wenn ich bin immer noch sitzt, Jubelt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich einige Probleme hatte mit der else-operator... Sie konnte nur tun Sie es mit zwei if-Anweisungen.
Sein, oder es könnte auch sein, dass Sie das verwenden () in einer Variablen-name: PROGRAMFILES(x86) und batch ist immer verwirrt. vielleicht versuchen Sie, die Variablen-Namen zu PROGRAMFILES_x86. Nur irgendwie spitballing hier.
Dies ist ziemlich einfach, denke ich...
Zu erkennen, wie die OS:
Weiter, immer den richtigen Programme-Ordner:
Realistisch, die Sie gerade brauchen, um oben genannten Zeile.
Ausprobieren...