Scripts batch
Résolu/Fermé
Scripteur
-
Modifié le 7 juin 2018 à 13:12
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - 10 juin 2018 à 20:53
barnabe0057 Messages postés 14452 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 3 août 2024 - 10 juin 2018 à 20:53
A voir également:
- Script batch utile
- Script vidéo youtube - Guide
- Fichier batch - Guide
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Executeur de script - Télécharger - Édition & Programmation
7 réponses
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
7 juin 2018 à 20:07
7 juin 2018 à 20:07
Bonjour,
Pour savoir de façon certaine si un fichier a été modifié, il suffit de comparer le hash du fichier à un instant T avec le hash du fichier à un autre instant T.
Pour savoir de façon certaine si un fichier a été modifié, il suffit de comparer le hash du fichier à un instant T avec le hash du fichier à un autre instant T.
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 8 juin 2018 à 21:17
Modifié le 8 juin 2018 à 21:17
J'ai du mal à comprendre la finalité de ton projet, de même que les étapes pour y parvenir.
En attendant je t'ai fait un exemple dont tu peux t'inspirer :
La partie soulignée est à remplacer par le dossier de ton choix.
En attendant je t'ai fait un exemple dont tu peux t'inspirer :
@echo off
setlocal enableextensions disabledelayedexpansion
chcp 65001 >nul
set DossierODT=%USERPROFILE%\Documents\Dossier
cd /d %DossierODT% || exit /b 1
echo. > liste_md5.txt
for %%A in (*.odt) do (call :hash "%%~A")
notepad liste_md5.txt
echo. & pause
exit /b 0
:hash
for /f "delims=" %%E in ('CertUtil -hashfile "%~1" MD5 ^| findstr /v ":"') do (
echo. & echo %~1;%%E
echo. & echo %~1;%%E >> liste_md5.txt
)
goto :eof
rem
La partie soulignée est à remplacer par le dossier de ton choix.
Bonsoir,
Merci pour votre aide
Je vais vous détailler mon soucis :
J'ai des fichiers odt avec une signature en particulier, de l'autre, un fichier txt contenant des signature numérique qui ne sont pas (en théorie) affilié au odt en question,
Je souhaiterais faire un petit script (une petite boucle for) qui irait comparer les odt avec les signatures référencés dans liste.txt, si une signature correspond avec un odt, alors, ce dernier supprimera l'odt invalide puisqu'elle correspond à la signature présente dans liste.txt
Liste.txt est créer pour détecter la présence d'un fichier odt intrus avec des signature numérique en particulier prédéfinis dans liste.txt
Merci d'avance pour votre réponse
Scripteur
Merci pour votre aide
Je vais vous détailler mon soucis :
J'ai des fichiers odt avec une signature en particulier, de l'autre, un fichier txt contenant des signature numérique qui ne sont pas (en théorie) affilié au odt en question,
Je souhaiterais faire un petit script (une petite boucle for) qui irait comparer les odt avec les signatures référencés dans liste.txt, si une signature correspond avec un odt, alors, ce dernier supprimera l'odt invalide puisqu'elle correspond à la signature présente dans liste.txt
Liste.txt est créer pour détecter la présence d'un fichier odt intrus avec des signature numérique en particulier prédéfinis dans liste.txt
Merci d'avance pour votre réponse
Scripteur
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 8 juin 2018 à 22:29
Modifié le 8 juin 2018 à 22:29
En supposant que le fichier liste.txt existe déjà et respecte cette syntaxe :
Voilà le script correspondant :
nom de fichier1;empreinte;
nom de fichier2;empreinte;
nom de fichier3;empreinte;
...
Voilà le script correspondant :
@echo off
setlocal enableextensions disabledelayedexpansion
chcp 1252 >nul
set DossierODT=%USERPROFILE%\Documents\dossier
cd /d %DossierODT% || exit /b 1
for %%A in (*.odt) do (call :comparaison "%%~A")
echo. & pause
exit /b 0
:comparaison
for /f "delims=" %%E in ('CertUtil -hashfile "%~1" MD5 ^| findstr /v ":"') do (
for /f "usebackq tokens=1,2 delims=;" %%G in ("liste.txt") do (
if "%%~E"=="%%~H" (
echo. & echo %~1 [ %%E ] ==^>^> correspondance trouvée : suppression du fichier
echo del /f "%~1" >nul
)
)
)
goto :eof
rem
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
>
Scripteur
Modifié le 8 juin 2018 à 22:50
Modifié le 8 juin 2018 à 22:50
Tout le disque C: ça va prendre un temps fou, mieux vaut cibler la recherche.
En général tout est stocké dans le profil utilisateur (%USERPROFILE%), pas besoin de fouiller dans tout le disque.
Actuellement mon script n'est pas prévu pour une recherche récursive, mais si tu veux je peux le modifier.
En général tout est stocké dans le profil utilisateur (%USERPROFILE%), pas besoin de fouiller dans tout le disque.
Actuellement mon script n'est pas prévu pour une recherche récursive, mais si tu veux je peux le modifier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 9 juin 2018 à 15:53
Modifié le 9 juin 2018 à 15:53
Voilà une version récursive :
Je rappelle que le fichier liste.txt doit être présent dans le dossier cible, et il doit respecter cette syntaxe :
Si tu veux d'autres modifications, fais-moi le savoir ;)
@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul
set DossierCible=%USERPROFILE%
cd /d %DossierCible% || exit /b 1
title Dossier Cible = %DossierCible%
set liste=liste.txt
if not exist "%liste%" (
echo. & echo ##### Liste des empreintes introuvable #####
timeout /t 5
exit /b 1
)
for /f "delims=" %%A in ('2^>nul dir /b /s "*.pdf"') do (
echo %%~A
set nom=%%~nxA
set nom=!nom:^(={!
set nom=!nom:^)=}!
if not "%%~nxA"=="!nom!" (ren "%%~A" "!nom!")
set full=%%~dpA!nom!
call:empreinte "!full!"
)
cls & echo. & echo ##### Fin de l'analyse #####
timeout /t 5
exit /b 0
:empreinte
for /f "delims=" %%E in ('CertUtil -hashfile "%~1" MD5 ^| findstr /v ":"') do (call:comparaison "%~1" "%%E")
goto :eof
rem
:comparaison
for /f "eol=µ tokens=1,2 delims=;" %%G in (%liste%) do (
if /i "%~2"=="%%H" (
cls & echo.
echo %~nx1 [ %~2 ] ==^>^> correspondance trouvée : suppression du fichier
echo del /f "%~1" >nul
timeout /t 1
echo.
)
)
goto :eof
rem
Je rappelle que le fichier liste.txt doit être présent dans le dossier cible, et il doit respecter cette syntaxe :
nom de fichier1;empreinte;
nom de fichier2;empreinte;
nom de fichier3;empreinte;
...
Si tu veux d'autres modifications, fais-moi le savoir ;)
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
>
Scripteur
Modifié le 9 juin 2018 à 20:17
Modifié le 9 juin 2018 à 20:17
Oui mais il faut mettre C:\
Et ce sera assez lent comme je l'ai déjà dit.
Si tu veux supprimer les fichiers, n'oublie pas d'enlever le ECHO que j'ai mis devant le DEL pour faire mes essais
Et ce sera assez lent comme je l'ai déjà dit.
Si tu veux supprimer les fichiers, n'oublie pas d'enlever le ECHO que j'ai mis devant le DEL pour faire mes essais
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 9 juin 2018 à 20:23
Modifié le 9 juin 2018 à 20:23
Pour accéder et supprimer des fichiers dans les dossiers système, il faut exécuter mon script avec le clic-droit puis "exécuter en tant qu'admin"
ps : dans mon premier FOR il faut remplacer pdf par odt.
ps : dans mon premier FOR il faut remplacer pdf par odt.
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
9 juin 2018 à 20:33
9 juin 2018 à 20:33
C'est parce que tu n'as pas beaucoup de fichiers ODT
Le script n'affiche que les dossiers/sous-dossiers qui possèdent des fichiers ODT
Le script n'affiche que les dossiers/sous-dossiers qui possèdent des fichiers ODT
Bonjour,
Je reviens vers vous pour un tout autre soucis,
Je suis en train d'utiliser ClamWin pour désinfecter un PC et me demandais, la commande clamscan -r -i / se contente t-elle de lire les fichiers et dire si ces derniers sont infecté ou les supprime t'il svp ?
Je vous demande ça car j'ai essaye de faire un test eicar et ce dernier est passé comme OK (pour une raison que j'ignore) et n'ai donc pu vérifier cela
Au passage, le script pour les ODTs fonctionne très bien, je vous en remercie
Merci
Scripteur
Je reviens vers vous pour un tout autre soucis,
Je suis en train d'utiliser ClamWin pour désinfecter un PC et me demandais, la commande clamscan -r -i / se contente t-elle de lire les fichiers et dire si ces derniers sont infecté ou les supprime t'il svp ?
Je vous demande ça car j'ai essaye de faire un test eicar et ce dernier est passé comme OK (pour une raison que j'ignore) et n'ai donc pu vérifier cela
Au passage, le script pour les ODTs fonctionne très bien, je vous en remercie
Merci
Scripteur
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
10 juin 2018 à 13:06
10 juin 2018 à 13:06
Bonjour,
Je ne peux pas répondre avec certitude, mais d'après ce que je vois le scan se contente d'analyser les fichiers, si tu veux mettre les fichiers infectés en quarantaine il faut utiliser le commutateur --move=DIRECTORY où DIRECTORY est un dossier de ton choix.
Je ne peux pas répondre avec certitude, mais d'après ce que je vois le scan se contente d'analyser les fichiers, si tu veux mettre les fichiers infectés en quarantaine il faut utiliser le commutateur --move=DIRECTORY où DIRECTORY est un dossier de ton choix.
J'ai donc continuer à chercher et j'ai trouvé cette commande en shell qui permet de supprimer un virus a partir d'une liste qui enregistre leurs path:
http://forum.ubuntu-fr.org/viewtopic.php?id=273895
Est-ce que l'équivalent en batch est ceci svp?:
Merci
Scripteur
http://forum.ubuntu-fr.org/viewtopic.php?id=273895
for i in `cat /tmp/scan.txt`; do rm $i;done;
Est-ce que l'équivalent en batch est ceci svp?:
for /f %%i in (type c:/scan.txt); do (del %%i)
Merci
Scripteur
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 10 juin 2018 à 13:44
Modifié le 10 juin 2018 à 13:44
Oui
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
10 juin 2018 à 13:57
10 juin 2018 à 13:57
Oui les virus arrivent à se loger dedans.
ClamWin possède les droits administrateur, sinon il ne servirait à rien.
ClamWin possède les droits administrateur, sinon il ne servirait à rien.
Bon, au final, j'ai encore une question:
Est-il possible de lancer plusieurs commande dans un même bat, je m'explique:
Pouvoir lancer
En même temps s'il vous plait, car sinon, cela m'oblige à créer plusieurs *.bat
Merci
Scripteur
Est-il possible de lancer plusieurs commande dans un même bat, je m'explique:
Pouvoir lancer
:fenêtre1
ping 0.0.0.0
:fenêtre2
ping 1.1.1.1
En même temps s'il vous plait, car sinon, cela m'oblige à créer plusieurs *.bat
Merci
Scripteur
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
10 juin 2018 à 18:32
10 juin 2018 à 18:32
Non ce n'est pas possible.
Je ne veux même pas savoir ce que tu es en train de faire.
Je ne veux même pas savoir ce que tu es en train de faire.
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
10 juin 2018 à 20:19
10 juin 2018 à 20:19
Oui tu es obligé de faire plusieurs scripts.
Tu peux poser autant de questions que tu veux, ça ne me dérange pas de répondre.
J'ai juste du mal à cerner tes intentions.
Tu peux poser autant de questions que tu veux, ça ne me dérange pas de répondre.
J'ai juste du mal à cerner tes intentions.
Croyez-moi, je ne fabrique pas de trojan^^
Je cherche juste à exécuter plusieurs commande de clamscan.exe... pour pas que cela ne soit trop long en vus de les automatiser
Je réalise plusieurs taches en batch que je devais faire depuis longtemps, et j'en ai profité pour vous bombardé de question tans que vous étiez dispo..
Je cherche juste à exécuter plusieurs commande de clamscan.exe... pour pas que cela ne soit trop long en vus de les automatiser
Je réalise plusieurs taches en batch que je devais faire depuis longtemps, et j'en ai profité pour vous bombardé de question tans que vous étiez dispo..
Modifié le 7 juin 2018 à 21:23
Mais n'y a t'il pas un moyen de mettre cela dans un batch ?
Aussi, comment fait-on pour créer & configurer une variable qui est en fait une liste.txt,
je m'explique:
j'ai une liste de fichiers odt présente dans un Dossier et souhaite les supprimer de cette façon:
set lavariableenuestion = une liste de fichiers
lavariableenuestion in (liste.txt) do (del lavariableenuestion)
Est-ce possible s'il vous plait ?
Merci
Scripteur
Modifié le 7 juin 2018 à 22:01
En passant par liste.txt ça donnerait ça :
ps : voilà la commande pour trouver le hash MD5 d'un fichier quelconque :
Modifié le 7 juin 2018 à 22:35
En effet, trouver le MD5 d'un fichier me serait très utile,
J'ai une dernière question :
Est-il possible de supprimer un fichier selon son empreinte MD5 en mettant la liste des signature numérique (MD5) dans un fichier liste.txt s'il vous plaît ?
Dois je mettre set MD5 = liste.txt ?
Merci
Scripteur
8 juin 2018 à 05:51