This is my CMD file :
:: Les fichiers partition3 et partition2 sont là pour indiquer à menu.lst sur quelle partition le PC démarre. Si partition3 est présent, cela signifie que le PC démarre sur la partition 3. Si partition2 est présent, le PC démarre sur la partition 2.
@ECHO OFF
:: Test de montage de la partition 1
IF NOT EXIST A:\NUL (
(ECHO select disk 0&ECHO select partition 1&ECHO set id=07 override&ECHO assign letter=A&ECHO exit)|diskpart > NUL
) ELSE (
GOTO TESTS
)
:TESTS
:: si partition3 = 0 et partition2 = 0 : le pc démarre sur la partition 3
:: si partition3 = 1 et partition2 = 1 : le pc démarre sur la partition 3
:: si partition3 = 1 et partition2 = 0 : le pc démarre sur la partition 3
:: si partition3 = 0 et partition2 = 1 : le pc démarre sur la partition 2
:: donc si partition3 = 0 et partition2 = 1, le pc démarre sur la partition 2, dans tous les autres cas, le pc démarre sur la partition 3
IF NOT EXIST "A:\partition3" (
IF EXIST "A:\partition2" (
GOTO DemarrageActuelSurPartition2
)
) ELSE (
GOTO DemarrageActuelSurPartition3
)
:: si partition2 existe
:DemarrageActuelSurPartition2
ECHO ==============================================
ECHO LE PC DMARRE ACTUELLEMENT SUR LA PARTITION 2.
ECHO ==============================================
ECHO CHOIX POSSIBLES:
ECHO A. Ne faire aucun changement et terminer le programme: taper A.
ECHO B. D‚marrer le PC sur la partition 3 … partir de maintenant: taper B.
ECHO.
CHOICE /C AB /M "Veuillez choisir une option: "
:: Les ERRORLEVEL doivent être placés dans le sens décroissant.
:: Ici, ERRORLEVEL 2 correspond à la pression de B, et ERRORLEVEL 1 à la pression de A.
IF ERRORLEVEL 2 GOTO CHANGEMENTPourDemarrageSurPartition3
IF ERRORLEVEL 1 GOTO PasDeModification
:CHANGEMENTPourDemarrageSurPartition3
:: si B
REN "A:\partition2" partition3 > NUL
IF EXIST "A:\partition3" IF NOT EXIST "A:\partition2" (
ECHO ===========================================
ECHO LE PC DMARRE DSORMAIS SUR LA PARTITION 3.
ECHO ===========================================
ECHO Fin du script.
PING -n 5 127.0.0.1 > NUL
GOTO Fin
) ELSE (
GOTO ErreurFichier
)
:: dans tous les autres cas
:DemarrageActuelSurPartition3
DEL "A:\partition2" > NUL
COPY /Y NUL "A:\partition3" > NUL
IF EXIST "A:\partition3" IF NOT EXIST "A:\partition2" (
ECHO ==============================================
ECHO LE PC DMARRE ACTUELLEMENT SUR LA PARTITION 3.
ECHO ==============================================
ECHO CHOIX POSSIBLES :
ECHO A. Ne faire aucun changement et terminer le programme: taper A.
ECHO B. D‚marrer le PC sur la partition 2 … partir de maintenant: taper B.
ECHO.
CHOICE /C AB /M "Veuillez choisir une option: "
ECHO.
IF ERRORLEVEL 2 GOTO CHANGEMENTPourDemarrageSurPartition2
IF ERRORLEVEL 1 GOTO PasDeModification
) ELSE (
GOTO ErreurFichier
)
:CHANGEMENTPourDemarrageSurPartition2
:: si B
REN "A:\partition3" partition2 > NUL
IF EXIST "A:\partition2" IF NOT EXIST "A:\partition3" (
ECHO ===========================================
ECHO LE PC DMARRE DSORMAIS SUR LA PARTITION 2.
ECHO ===========================================
ECHO Fin du script.
PING -n 5 127.0.0.1 > NUL
GOTO Fin
) ELSE (
GOTO ErreurFichier
)
:ErreurFichier
ECHO "!!!!Erreur: Impossible de modifier les fichiers!!!!"
ECHO Fin du script.
PING -n 5 127.0.0.1 > NUL
GOTO Fin
:PasDeModification
:: si A, aucune modification effectuée
ECHO Ancune modification effectu‚e.
ECHO Fin du script.
PING -n 5 127.0.0.1 > NUL
GOTO Fin
:Fin
:: Démonter la partition 1
(ECHO select disk 0&ECHO select partition 1&ECHO set id=DE override&ECHO exit)|diskpart > NUL
EXIT
But it's not totally working. I have issues to set the following condition:
(IF NOT EXIST file1 AND IF EXIST file2), THEN do, ELSE do
Indeed, I would like to check the presence of the files "partition3" and "partition2". Thought extensive search through the net, I didn't find a satisfying answer.
This the menu.lst:
debug 0
graphicsmode -1 800 600 -1 > nul
font (hd0,0)/unifont.hex.gz > nul
color normal=15 highlight=0xE0 helptext=0x0E heading=0x08 standard=15 border=0x0F
(hd0,0)/menusetting.gz 0 0 1 16 5 10 75 13
#Nombre total de colonnes en 800px de large: 101
#/menusetting %wdspace% %lnspace% %bdwidth% %tophelp% %noitems% %topstart% %menuw% %rstart%
#/menusetting 1 2 3 4 5 6 7 8
#De %wdspace% à %rstart%:
#/menusettings 1 %espacement des mots%
# 2 %espacement des entrées%
# 3 %largeur de la bordure%
# 4 %l'aide commence à partir de ce nombre de lignes à partir du haut%
# 5 %nombre d'entrées du menu%
# 6 %le menu commence à partir de ce nombre de lignes à partir du haut%
# 7 %largeur du menu%
# 8 %le menu commence à partir de ce nombre de colonnes à partir de la droite%
#/menusettings.gz u = retour des valeurs par défaut de grub4dos
write (md)0x220+1 !BAT\necho -n -P:0000 $[0117] MENU DE DÉMARRAGE DE L'ORDINATEUR \necho -n -P:0612 $[0107]Veuillez faire un choix parmi les options suivantes:\necho -n -P:3412 $[0007]Ordinateur installé par ############### le 01/08/2013 (#########@gmail.com).\0 && initscript (md)0x220+1
#parttype (hd0,0) 0xDE
timeout 10
if exist (hd0,0)/partition3 default 0
if exist (hd0,0)/partition2 default 1
#numérotation auto des entrées
#write 0x8274 0x2001
password qd;in
#équivalent à admin en QWERTY
title Démarrer Windows\n\n Démarrage automatique dans 10 secondes.\n Appuyez sur une touche pour arrêter le décompte.
#fallback 1 permet de passer immédiatement à l'entrée 1 si celle-ci (entrée 0) échoue.
fallback 1
#parttype (hd0,0) 0xDE
#parttype (hd0,1) 0xDE
root (hd0,2)
chainloader (hd0,2)/bootmgr
title Démarrer le système de secours\n
#parttype (hd0,0) 0xDE
#parttype (hd0,1) 0x07
root (hd0,1)
chainloader (hd0,1)/bootmgr
title Éteindre l'ordinateur\n\n Pressez Entrée pour éteindre l'ordinateur.
#parttype (hd0,0) 0xDE
halt
title Redémarrer l'ordinateur\n\n Pressez Entrée pour redémarrer l'ordinateur.
#parttype (hd0,0) 0xDE
reboot
title Outils avancés\n\n Uniquement si vous savez ce que vous faites!
configfile (hd0,0)/OutilsAvances.lst
If someone could explain me how to do a proper (IF not exist file1 AND IF exist file2, THEN do, ELSE do), I would be thankful.
Edited by Vikram, 23 August 2013 - 02:41 PM.