Scripts batch
Résolu
Scripteur
-
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je vous expose mon soucis,
Je dois écrire un petit script batch qui détecte si un fichier en à modifié un autre (libre Office qui modifie un odt dans mon cas) le tout dans un script batch,
Je dois aussi montrer si libre Office supprime ce odt en question,
Sauriez vous comment faire cela s'il vous plaît ?
Merci pour votre aide
Cordialement
Scripteur
Je vous expose mon soucis,
Je dois écrire un petit script batch qui détecte si un fichier en à modifié un autre (libre Office qui modifie un odt dans mon cas) le tout dans un script batch,
Je dois aussi montrer si libre Office supprime ce odt en question,
Sauriez vous comment faire cela s'il vous plaît ?
Merci pour votre aide
Cordialement
Scripteur
A voir également:
- Script batch utile
- Script vidéo youtube - Guide
- Fichier batch - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Batch converter - Télécharger - Photo & Graphisme
7 réponses
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ;)
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
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
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
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..
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
En passant par liste.txt ça donnerait ça :
ps : voilà la commande pour trouver le hash MD5 d'un fichier quelconque :
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