2017-05-04 1 views
1

Je veux détecter la version Windows du lot et que par conséquent le fichier de démarrage exefichier batch: - Windows détecter la version et exécuter le fichier exe

Exemple de code ne fonctionne pas

@echo off 
setlocal 
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j 
if "%version%" geq "6.2" goto netfx_4 
if "%version%" == "6.1" goto netfx_35 
if "%version%" == "6.0" goto netfx_35 

:netfx_35 
start "C:\Users\Ankur\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" 
exit 1 
goto :EOF 

:netfx_4 
start "C:\Users\Ankur\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk" 
exit 1 
goto :EOF 

endlocal 

pour les tests sur la place de exe je démarre le fichier bloc-notes

mais ce code ne fonctionne pas.

Répondre

1
@echo off 
setlocal 
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j 
if "%version%" geq "6.2" goto netfx_4 
if "%version%" == "6.1" goto netfx_35 
if "%version%" == "6.0" goto netfx_35 

:netfx_35 
start start "" name.exe 
exit 1 
goto :EOF 

:netfx_4 
start "" name.exe 
exit 1 
goto :EOF 

endlocal 

Note: - EXE doit être o le même emplacement du fichier batch

2

>= est un opérateur de comparaison non valide. Essayez geq (d'autres sont equneqlssleqgtr

+0

salut J'ai mis à jour le code mais le même résultat ne fonctionne pas juste cmd ouvert –

+0

S'il vous plaît expliquer ce qui s'est passé. "ne fonctionne pas" signifie "n'a pas fait ce que j'attendais" - qu'est-ce qu'il a fait? "juste cmd ouvert" - aucune idée de ce que vous voulez dire ici. 'exit' quittera' cmd' - si vous voulez simplement retourner un niveau d'erreur, utilisez 'exit/b errornumber' Exécuter un' .lnk' exécuter l'exécutable sur votre machine (personnellement, j'utilise 'notepad' qui est probablement dans votre «chemin») Quelle version est retournée pour vous? La mienne renverrait '10.0', ce qui est inférieur à tous vos tests parce que la comparaison est effectuée sous forme de chaîne et' 1' est inférieure à '6'. – Magoo

+0

désolé obtenir le problème exe devrait être sur le même emplacement –

1

Comme les versions que vous recherchez sont OS qui utilisent WMIC, je aller dans cette voie, (d'autant plus que la sortie de ver est techniquement la pas la version OS).

@ECHO OFF 

FOR /F "SKIP=1 TOKENS=1-2 DELIMS=." %%A IN ('WMIC OS GET VERSION' 
) DO FOR %%C IN (%%A%%B) DO IF %%C GEQ 62 GOTO :netfx_4 

:netfx_35 
START "" "%AppData%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad35.lnk" 
GOTO :EOF 

:netfx_4 
START "" "%AppData%\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad4.lnk" 
GOTO :EOF