Condition .bat

Résolu/Fermé
dr4go56 Messages postés 157 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 15 juillet 2018 - Modifié par pijaku le 17/01/2014 à 13:04
AEI vulcain Messages postés 259 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 10 juillet 2017 - 20 janv. 2014 à 19:34
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.
A voir également:

5 réponses

AEI vulcain Messages postés 259 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 10 juillet 2017 30
17 janv. 2014 à 12:12
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
dr4go56 Messages postés 157 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 15 juillet 2018 51
Modifié par pijaku le 17/01/2014 à 14:49
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
AEI vulcain Messages postés 259 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 10 juillet 2017 30
Modifié par AEI vulcain le 17/01/2014 à 11:29
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
dr4go56 Messages postés 157 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 15 juillet 2018 51
17 janv. 2014 à 11:26
Merci j'essaye sa de suite
0
dr4go56 Messages postés 157 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 15 juillet 2018 51
Modifié par dr4go56 le 17/01/2014 à 11:30
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AEI vulcain Messages postés 259 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 10 juillet 2017 30
Modifié par AEI vulcain le 17/01/2014 à 15:42
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
AEI vulcain Messages postés 259 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 10 juillet 2017 30
20 janv. 2014 à 00:17
merci de m'informer sur le sujet
cordialement
0
dr4go56 Messages postés 157 Date d'inscription mercredi 16 octobre 2013 Statut Membre Dernière intervention 15 juillet 2018 51
20 janv. 2014 à 10:12
Merci pour ta réponse ça à très bien fonctionné

Cordialement
0
AEI vulcain Messages postés 259 Date d'inscription mardi 14 janvier 2014 Statut Membre Dernière intervention 10 juillet 2017 30
20 janv. 2014 à 19:34
Super et à bientôt
0