Condition .bat

Résolu
dr4go56 Messages postés 198 Statut Membre -  
AEI vulcain Messages postés 264 Statut Membre -
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. AEI vulcain Messages postés 264 Statut Membre 30
     
    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. dr4go56 Messages postés 198 Statut Membre 51
       
      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. AEI vulcain Messages postés 264 Statut Membre 30
     
    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
  3. dr4go56 Messages postés 198 Statut Membre 51
     
    Merci j'essaye sa de suite
    0
  4. dr4go56 Messages postés 198 Statut Membre 51
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. AEI vulcain Messages postés 264 Statut Membre 30
     
    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. AEI vulcain Messages postés 264 Statut Membre 30
       
      merci de m'informer sur le sujet
      cordialement
      0
    2. dr4go56 Messages postés 198 Statut Membre 51
       
      Merci pour ta réponse ça à très bien fonctionné

      Cordialement
      0
    3. AEI vulcain Messages postés 264 Statut Membre 30
       
      Super et à bientôt
      0