Condition .bat

Résolu
Bonjour,
Je voux eplique mon problème j'ai fait un script (.bat) qui install un logiciel puis qui crée un raccourci dans le menu démarré pour windows 7 pas de problème mais pour windows Xp le chemin n'est pas le même je voudrais ne pas avoir à faire deux script donc j'aimerais mettre une condition dans mon script "if" sauf que je sais pas comment le placer quelqu'un pourrait m'aider ?

je vous copie mon script (celui fonctionne bien pour windows 7 ):
 ::@echo

set source=Portable_Audacity

set destination=C:\Applications
set dest_programm=Portable_Audacity

mkdir "%destination%\%dest_programm%"
xcopy "%source%" "%destination%\%dest_programm%\"/E
copy "%source%\AudacityPortable.lnk" %Userprofile%"\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\AudacityPortable.lnk"
exit

Comment faire pour mettre une condition pour que si le script ne reconnait pas windows 7 il le passe en tant que windows Xp ?

Cordialement, Dr4go56
Bat toi avec les meilleurs ou crève avec les autres.

5 réponses

  1. Re

    je regarde cet après midi mais cela me parait pas compliquer
    j'ai réalisé certain batch qui possède les instructions donc je regarde cet AP
    1
    1. J'en suis ici :
      ::@echo

      set source=Portable_Audacity

      set destination=C:\Applications
      set dest_programm=Portable_Audacity

      mkdir "%destination%\%dest_programm%"
      xcopy "%source%" "%destination%\%dest_programm%\"/E

      if exist %Userprofile%"\AppData (copy "%source%\AudacityPortable.lnk" %Userprofile%"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\AudacityPortable.lnk") else (copy "C:\Documents and Settings\Utilisateur\Bureau\XP\Portable_Audacity\AudacityPortable.lnk" "%userprofile%\Menu D'marrer")

      pause

      ::exit

      Maintenant mon problème arrive au niveau de "if" voyez vous mon erreur ?
      0
  2. Bonjour,

    il faut tester la version windows et ensuite faire le IF.
    Teste la clé de registre, si tu ne l'a pas je regarde
    cordialement,
    0
    1. Merci j'essaye sa de suite
      0
      1. Pour m'exprimer plus clairement si mon raccourci %Userprofile%"\AppData\Roaming éxiste sur Windows alors placer le racourci ici si il n'éxiste pas alors le placer dans C:\Documents and settings\utilisateur\Menu démarrer\Programmes

        Cordialement, Dr4go56
        Bat toi avec les meilleurs ou crève avec les autres.
        0
        1. Re,

          Utilise la fonction move

          if exist "%Userprofile%"\AppData\Roaming\nom fichier" (move "%Userprofile%"\AppData\Roaming\nom fichier" "dans le nouveau répertoire") que tu place en boucle pour lire un répertoire par exemple.

          mais utilise popd & pushd

          le code que je te fourni te montre l'utilisation, tes variables aussi dans la déclaration.

          ******************* pour la clé windows si je ne me trompe pas
          for /f "tokens=3,*" %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ^|find "ProductId"') do (
          echo Num'ro version Windows : %%i
          )

          *************** EXEMPLE DE BAT

          ne lance pas le bat que je te laisse car chez moi j'avais fais le bat pour trier 130000 fichiers ou j'ai répertorié des clés correspondante à des signatures infectieuses, pour faire des essais, alors voilà. tu peux adapter..

          **********************************************************

          @echo off
          cls
          rem **********************************
          rem petit batch creer par Vulcain
          rem **********************************
          title batchvulcain
          @echo off
          setlocal EnableExtensions
          :menu
          rem défini la taille de la fenêtre cmd
          mode con cols=80 lines=50
          color f1
          echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
          echo º º
          echo º MENU GENERAL º
          echo º º
          echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
          echo.
          rem valide les accents
          MODE CON: CP SELECT=1252>nul
          rem corps du menu
          echo 1.Ouvrir fichier dans bloc note
          echo 2.Lecture registre User des softwares
          echo 3.Liste processus qui ne r'pondent pas
          echo 4.V'rifier une chaine dans fichier
          echo 5.Lire r'pertoire et r'pertori' dans fichier
          echo 6.Supprimer le fichier rapport g'n'r' par le batch
          echo 7.Imprimer le fichier Batch
          echo 8.Tri fichiers/r'pertoire suivant critSre
          echo 9.Quitter
          echo.
          color
          set /p reponse="Quel programme voulez-vous ex'cuter ?"

          If /i "%reponse%"=="1" goto :Openfichier
          If /i "%reponse%"=="2" goto :trouvecles
          If /i "%reponse%"=="3" goto :recherprocess
          If /i "%reponse%"=="4" goto :VerChaineFic
          If /i "%reponse%"=="5" goto :cptfictxt
          If /i "%reponse%"=="6" goto :supprimrapport
          If /i "%reponse%"=="7" goto :imprimrapport
          If /i "%reponse%"=="8" goto :TriFicChaineRep
          If /i "%reponse%"=="9" goto :fin
          rem Teste la saisie si incorrecte retour Menu
          if not defined reponse[%1] (
          cls
          goto :Menu
          )
          rem ============================================================================
          rem *************************************************Openfichier****** 1
          rem Ouvre et lit un fichier .txt
          :Openfichier
          cls
          setlocal
          set fichier=c:\RapportReg.txt
          rem test si fichier existe sous c:\
          if exist "%fichier%" (
          for /f "delims=" %%a in ('%fichier%') do echo %%a
          )
          cls
          Endlocal
          goto :menu
          rem ============================================================================
          rem ***************************************************trouvecles****** 2
          rem Lecture des programmes installes dans registre
          :trouvecles
          cls
          Setlocal
          rem net user Administrateur /active:no
          set rapport=RapportReg.txt
          set chemin="c:"
          rem delele du fichier rapport
          if exist "%chemin%\%rapport%" (
          del "%chemin%\%rapport%"
          )
          rem création du fichier rapport
          if not exist "%chemin%\%rapport%" (
          echo rapport diagnostique > "%chemin%\%rapport%"
          echo Liste des cles de registres des programmes installes >> "%chemin%\%rapport%"
          echo . ......... >> "%chemin%\%rapport%"
          )
          rem lit la clé et ajoute à chaque execution son contenu dans le fichier

          For /f "tokens=1" %%i in ('Reg Query HKEY_CURRENT_USER\Software\') do echo %%i >> "%chemin%\%rapport%"

          rem net user Administrateur /active:yes
          rem pause
          Endlocal
          goto :menu
          rem ============================================================================
          rem **************************************************recherprocess**** 3
          rem permettant de trouver les processus qui ne répondent pas
          :NonRepProcess
          setlocal
          cls
          tasklist /fi "status eq not responding"
          echo .
          rem tasklist /m (pour connaitre les Dll attachés)
          pause
          endlocal
          goto :menu
          rem ============================================================================
          rem ***************************************************VerChaineFic****** 4
          :VerChaineFic
          rem vérifie et extrait si la chaine Xaaaaa existe dans le texte
          cls
          setlocal
          set dossier=c:\DelfXa.txt
          set chaîne="Xaaaaa"
          for /f "tokens=*" %%z in ('type "%dossier%"^|findstr /C:"%chaîne%"') do (
          echo Nom de la chaine %%z
          )

          pause
          endlocal
          cls
          goto :menu
          rem ============================================================================
          rem *****************************************************cptfictxt****** 5
          :cptfictxt
          cls
          setlocal
          rem compte le nombre de fichier .txt dans c:\
          set count=0
          set nomfichier=c:\NomFichierTxt.txt

          rem place dans un fichier le nom de fichier.txt dans un fichier
          dir /O/N/B c:\*.txt > %nomfichier%
          rem compte le nombre de fichier txt
          for /f "tokens=*" %%i in ('type "%NomFichier%"') do set /a count+=1
          echo ....
          echo ....... vous avez %count% fichiers txt
          echo ....
          rem lit le fichier
          for /f "tokens=*" %%z in ('type "%NomFichier%"') do (
          rem c:\%%z
          echo .. %%z
          )
          pause
          endlocal
          goto :menu
          rem ============================================================================
          rem *************************************************supprimrapport****** 6
          :supprimrapport
          cls
          Setlocal
          set rapport=RapportReg.txt
          set chemin="c:"
          rem supprime le fichier rapport
          if exist "%chemin%\%rapport%" (
          del "%chemin%\%rapport%"
          echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
          echo º º
          echo º Fichier %chemin%\%rapport% supprim' º
          echo º º
          echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
          echo.
          )
          if not exist "%chemin%\%rapport%" (
          echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
          echo º º
          echo º Fichier d'j... supprim' º
          echo º º
          echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
          echo.
          )
          pause
          cls
          endlocal
          goto :menu
          rem ============================================================================
          Rem ************************************imprimrapport*************** 7
          :imprimrapport
          setlocal
          cls
          set /p reponse="Voulez-vous imprimer O/N : "
          echo .
          echo .
          If /i "%reponse%"=="O" goto :okimp
          If /i "%reponse%"=="N" goto :menu
          rem Teste la saisie si incorrecte retour Menu
          if not defined reponse[%1] (
          cls
          goto :Menu
          )

          :okimp
          set /p ficreponse="Entrer le nom du fichier "
          if /i "%ficreponse%"=="" (
          goto :okimp
          )

          set /p repertoire="Entrer le nom du r'pertoire c:\ par d'faut "
          if /i "%repertoire%"=="" (
          set repertoire=c:\
          )
          set ficimprimer=%repertoire%%ficreponse%
          echo %ficimprimer%

          echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
          echo º º
          echo º Impression en cours .......... º
          echo º º
          echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
          echo.
          if exist "%ficimprimer%" (
          print /D:USB002 %ficimprimer% >nul
          )

          pause
          endlocal
          goto :menu

          rem ============================================================================
          :TriFicChaineRep
          rem *********************************************************
          rem Lire repertoire, recupere fichier et si chaine dans
          rem fichier = Good, copie fichier dans repertoire Bon
          rem repertoire en dynamique %CD%
          rem ********************************************************* 8

          rem Déclaration variables
          @echo off
          cls
          setlocal ENABLEDELAYEDEXPANSION
          set count=0
          set NonTransfert=0
          set impostransfert=0
          set $recherche="good"
          set $recherche2="Douteux"
          set $recherche3="infection"
          set $recherche4="xxxx"
          set $recherche5="(???)"
          set $recherche6="Rogue"

          rem répertoire ou son les fichiers à trier
          set $RepLire=C:\Users\Thierry\xx\Fichiers répertoriés des infections
          rem Répertoire ou son les fichiers correcte
          set $CreatRepBon=C:\Users\Thierry\xx\Fichiers répertoriés des infections\bon
          rem répertoire ou son les fichiers douteux
          set $CreatRepDouteux=C:\Users\Thierry\xx\Fichiers répertoriés des infections\Douteux
          rem répertoire ou son les fichiers mauvais
          set $CreatRepMauvais=C:\Users\Thierry\xx\Fichiers répertoriés des infections\Mauvais
          rem répertoire ou son les fichiers inconnu
          set $CreatRepInconnu=C:\Users\Thierry\xx\Fichiers répertoriés des infections\Inconnu

          pushd "%$Replire%"&md "%$CreatRepBon%"&md "%$CreatRepMauvais%"&md "%$CreatRepDouteux%"&md "%$CreatRepInconnu%"
          rem Boucle lecture répertoire et appel recherche pour déplacement
          echo ******************** Transfert en cours ***********************************

          for %%a in (*.*) do (
          call :cherche %%a
          )

          popd
          cls
          echo ******************** Transfert effectu' ***********************************
          echo ******** Vous avez tranf'r' %count% fichier(s)
          echo ******** Vous avez %impostransfert% fichier(s) impossible ... transf'r'(s)
          echo ***************************************************************************
          endlocal
          pause
          goto :menu

          :cherche
          rem Lecture et recherche de la chaine de good
          find /C /I %$recherche% %1
          if !errorlevel!==1 (
          set /A NonTransfert+=1
          )
          rem teste si fichier existe, déplace fichier dans repertoire bon
          if !errorlevel!==0 (
          set /A count+=1
          if not exist "%$CreatRepBon%\%1" (move "%$Replire%\%1" "%$CreatRepBon%\%1")
          )

          rem ===========================================================================

          rem Lecture et recherche de la chaine de Douteux
          find /C /I %$recherche2% %1
          if !errorlevel!==1 (
          set /A NonTransfert+=1
          )

          rem teste si fichier existe, déplace fichier dans repertoire Douteux
          if !errorlevel!==0 (
          set /A count+=1
          if not exist "%$CreatRepDouteux%\%1" (move "%$Replire%\%1" "%$CreatRepDouteux%\%1")
          )

          rem ===========================================================================

          rem Lecture et recherche de la chaine de infection
          find /C /I %$recherche3% %1
          if !errorlevel!==1 (
          set /A NonTransfert+=1
          )
          echo %$CreatRepMauvais%\%1 %$Replire%\%1 %$CreatRepMauvais%\%1
          pause
          rem teste si fichier existe, déplace fichier dans repertoire Mauvais
          if !errorlevel!==0 (
          set /A count+=1
          if not exist "%$CreatRepMauvais%\%1" (move "%$Replire%\%1" "%$CreatRepMauvais%\%1")
          )

          rem ===========================================================================

          rem Lecture et recherche de la chaine de infection xxxx
          find /C /I %$recherche4% %1
          if !errorlevel!==1 (
          set /A NonTransfert+=1
          )
          rem teste si fichier existe, déplace fichier dans repertoire Mauvais
          if !errorlevel!==0 (
          set /A count+=1
          if not exist "%$CreatRepMauvais%\%1" (move "%$Replire%\%1" "%$CreatRepMauvais%\%1")
          )

          rem ===========================================================================

          rem Lecture et recherche de la chaine de infection inconnu
          find /C /I %$recherche5% %1
          if !errorlevel!==1 (
          set /A NonTransfert+=1
          )
          rem teste si fichier existe, déplace fichier dans repertoire Inconnu
          if !errorlevel!==0 (
          set /A count+=1
          if not exist "%$CreatRepInconnu%\%1" (move "%$Replire%\%1" "%$CreatRepInconnu%\%1")
          )

          rem ===========================================================================

          rem Lecture et recherche de la chaine (servant autre recherche) rogue
          find /C /I %$recherche6% %1
          if !errorlevel!==1 (
          set /A NonTransfert+=1
          )
          rem teste si fichier existe, déplace fichier dans repertoire mauvais
          if !errorlevel!==0 (
          set /A count+=1
          if not exist "%$CreatRepMauvais%\%1" (move "%$Replire%\%1" "%$CreatRepMauvais%\%1")
          )
          if NonTransfert NEQ 0 (
          set /A Nontransfert=0
          set /A impostransfert+=1
          )

          :end

          rem ******************************************************* FIN 9
          :fin
          color
          endlocal
          :eof
          0
          1. merci de m'informer sur le sujet
            cordialement
            0
          2. Merci pour ta réponse ça à très bien fonctionné

            Cordialement
            0
          3. Super et à bientôt
            0