.BAT : Supprimer dossier Menu démarrer de XP

micromega Messages postés 141 Statut Membre -  
 Micromega -
Bonjour à tous,

J'essaye de créer un code .bat pour supprimer un dossier et son contenu, présent dans le menu démarrer de Windows.
Pour cela j'ai déjà ce code là :

@echo off
rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\Test"

Mais cela ne fonctionne uniquement sur Windows 7, dès que j'essaye sur Windows XP, l'adresse est mauvaise. J'ai eu beau tester et chercher la solution quelque part, j'ai rien trouvé qui ne fonctionne.

Si quelqu'un peu m'aider à résoudre ce problème....

Merci à vous.

5 réponses

Résumé de la discussion

Un script batch vise à supprimer un dossier et son contenu du Start Menu et rencontre une incohérence d’adresse entre Windows 7 et Windows XP.
Plusieurs solutions évoquent l’adaptation du chemin, notamment %ALLUSERSPROFILE%\Start Menu\Programs\Test et la nécessité de remplacer l’accent par Alt+0130 pour Menu Démarrer, afin d’assurer l’accès sur XP.
En parallèle, certaines réponses tentent de détecter les lecteurs CD ou USB et d’enchaîner des programmes via /wait et call, ou d’utiliser des commandes comme fsutil fsinfo drivetype pour cibler le bon lecteur.
En dernier lieu, un ajustement pratique consiste à tester le chemin exact sur chaque système et à adapter le script selon la lettre du lecteur CD et l’emplacement du Start Menu.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    sur XP en français, c'est
    rd /s /q "%ALLUSERSPROFILE%\Menu Démarrer\Programs"
    0
  2. micromega
     
    Bonjour dubcek,

    J'ai trouvé la solution :
    rd /s /q "%ALLUSERSPROFILE%\Menu D'marrer\Programmes\Test" > WinXP
    rd /s /q "%ALLUSERSPROFILE%\Start Menu\Programs\Test" > Win7

    En faite il faut remplacer l'accent du "Menu Démarrer" par la combinaison "Alt"+"0130". Sinon rien y fait.

    Bon cependant je rencontre un nouveau problème ave ma commande :

    @echo off
    call "test1.exe"
    /wait
    call "test2.exe"

    Elle fonctionne très bien lorsqu'elle est sur le disque dur; cependant dès que j'exécute mon test à partir d'un CD, la seconde ligne : call "test2.exe"
    ne fonctionne pas (pass d'éxécution).
    Cela est certainement dû au fait que la commande est éxécuté à partir d'un lecteur CD.

    En cherchant sur le net j'ai trouvé des trucs comme : start "essai" %CDROM%/
    Mais j'ai beau les utiliser dans tous les sens rien ne se passe.

    Quelqu'un aurait-il la solution à mon problème ?

    Merci encore.
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      que signifire le /wait ?
      et sans les call ?
      elles doivent s'exécuter l'une après l'autre ?
      0
    2. micromega
       
      Le "/wait" signifie que "test2.exe" ne s'exécute que lorsque "test1.exe" est fini. Elles doivent donc s'exécuter l'une après l'autre.

      "Test 1.exe" installation et attente de fin (/wait), lancer "test2.exe" ensuite.

      Cela marche lorsque je clique sur le Bat de mon bureau, mais le même dans un CD, il ne m'éxécute pas le "Test2.exe".

      Pas d'idées à propos de l'éxécution de .bat à partir d'un cd ?

      Merci
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      /wait est une option de start non ?
      essayer en précisant le chemin des test.exe : C:\chemin\test.exe
      0
  3. Utilisateur anonyme
     
    Salut l'ami :)

    Bon cependant je rencontre un nouveau problème ave ma commande :
    @echo off  
    call "test1.exe"  
    /wait  
    call "test2.exe" 


    normal que tu n'y arrives pas ;)

    => la commande call "test1.exe" marche, si tu es dans le bon dossier
    => idem pour call "test2.exe"

    si tu veux vraiment utilise cette ligne de commande ( call "test1.exe" ), il faut que tu te places sur le bon dossier, en utilisant la commande CD.

    Ou alors, tu mets le chemin complet.

    ==> Exemple :

    @echo off  
    CD c:\windows  
    call notepad.exe  
    call write.exe


    ou

    @echo off  
    call c:\windows\notepad.exe  
    call c:\windows\write.exe


    ================

    Pourquoi mettre un wait ?

    La commande Call permet de lancer un fichier, en interrompant le script, jusqu'à la "fermeture" de ce fichier.
    Une fois le fichier fermé,
    le script continue sa lancée...

    Un wait est donc inutile ;)

    ++
    0
  4. micromega
     
    Bonjour,

    Merci à vous tous pour vos commentaires et vos aides.

    Pour construire des .bat je fais beaucoup de recherches et de tests. C'est pour cela que je ponds des trucs un peu bizaroïdes des fois. Mais tant que cela fonctionne, ça me va ! =D

    Captain Tsubasa, je comprends ton exemple merci.
    Mais comment faire lorsque le dossier des fichiers à lancer est dans un lecteur qui peut changer de lettre. En effet, selon le PC, le lecteur CD peut avoir une lettre différente : e/: f/: k/: ..... ?

    Faut-il utiliser %CDROM% ? :

    @echo off
    call %CDROM%\dossier\test1.exe
    call %CDROM%\dossier\test2.exe

    Merci encore
    0
    1. Utilisateur anonyme
       
      Salut :)

      Faut-il utiliser %CDROM%

      Hélas, non, cette variable d'environnement, %CDROM% n'existe pas (sur mon seven)


      Mais attend, et si tu demandais la lettre du cdrom à l'utilisateur ?


      Comme ceci :
      @echo off 
      cls 
      echo Quel est la lettre du CDROM ? 
      set /p lettre= 
      "%lettre%:\dossier\test1.exe " 
      pause



      ++
      0
    2. Micromega
       
      Bonjour capitaine Tsubasa,

      J'ai essayer la dernière commande qui tu m'as donnée, mais je suis navré cela ne fonctionne pas.
      On me demande bien la lettre du lecteur mais rien ne se passe.
      Je continue mes recherches si tu as d'autres idées...

      Merci !
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ce script détecte le lecteur associé au cdrom : http://www.robvanderwoude.com/files/getcdromdrivesxp_xp.txt
    0
    1. Micromega
       
      Bonjour dubcek,

      Comment utiliser ce script dans mon cas ?

      Merci
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      oublier le script précédent, essayer celui ci.
      la variable %%k contient la lettre du lecteur cd-rom, mettre le code là, entre ()
      @echo off 
      set d=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
      for %%a in (%d%) do ( 
       for /F "tokens=1" %%k in ('fsutil fsinfo drivetype %%a: ^| findstr "CD-ROM"') do ( 
          echo %%k 
           )  
      ) 
      
      0
    3. micromega Messages postés 141 Statut Membre 1
       
      Merci dubcek de t'acharner à m'aider.

      Je vais essayer la dernier script que tu viens de m'envoyer, juste pour savoir ; lorsque tu parle d'ajouter mon code cela équivaut à :

      @echo off
      set d=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
      for %%a in (%d%) do (
      for /F "tokens=1" %%k in ('fsutil fsinfo drivetype %%a: ^| findstr "CD-ROM"') do (
      echo %%k
      (call "test.exe")
      (call "test2.ese")
      )
      )

      C'est comme cela que je dois insérer mon code ?

      Merci.
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      comme ça
      @echo off
      set d=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
      for %%a in (%d%) do (
        for /F "tokens=1" %%k in ('fsutil fsinfo drivetype %%a: ^| findstr "CD-ROM"') do (
          call %%k\dossier\test1.exe
          call %%k\dossier\test2.exe
        )
      ) 
      0
    5. micromega
       
      Bonjour,

      Désolé pour le temps de réponse, je n'avais pas eu le temps de me remettre les mains dans la commande.
      J'ai donc essayé la commande que tu as créé Dubcek, et cela semble fonctionner à merveille !
      Il faut bien penser à écrire toute l'arbre du fichier à lancer depuis la racine.

      Cependant, dans notre exemple, j'aurais besoin que "test2.exe" ne se lance que lorsque "test1.exe" est fini.

      Je pensais utiliser la commande "/wait" mais apparement cela ne fonctionne pas (déjà mentionné plus haut et également essayé).

      Comment puis-je créer cette attente ?

      Après cela je pense que tout sera bon.

      Merci encore
      0