Boules Boucles en Batch
Résolu/Fermé
alexpc1
Messages postés
150
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
26 décembre 2009
-
2 janv. 2009 à 11:59
alexpc1 Messages postés 150 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 26 décembre 2009 - 21 janv. 2009 à 00:16
alexpc1 Messages postés 150 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 26 décembre 2009 - 21 janv. 2009 à 00:16
A voir également:
- Boules Boucles en Batch
- Fichier batch - Guide
- Jeux de boules gratuits à télécharger - Télécharger - Jeux vidéo
- Batch color - Forum Autoit / batch
- Input batch - Forum Autoit / batch
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
7 réponses
SAW5
Messages postés
111
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 janvier 2010
7
3 janv. 2009 à 11:12
3 janv. 2009 à 11:12
salut,
Alors tu veux selectionner le crc de tous les fichiers d'un dossier (sous-dossiers) et afficher le numero (5AC8BC99) uniquement...c'est ça ce que vous chercher ..?
Exemple :
---------
la sortie de la commande fsum -crc32 flename (pour un errorlevel 0) est
f9cb082f ?CRC32*file.ext
alors vous voulez coder le resultat pour qu'il devienne :
OK - fichier avec le crc f9cb082f.ext
Alors tu veux selectionner le crc de tous les fichiers d'un dossier (sous-dossiers) et afficher le numero (5AC8BC99) uniquement...c'est ça ce que vous chercher ..?
Exemple :
---------
la sortie de la commande fsum -crc32 flename (pour un errorlevel 0) est
f9cb082f ?CRC32*file.ext
alors vous voulez coder le resultat pour qu'il devienne :
OK - fichier avec le crc f9cb082f.ext
alexpc1
Messages postés
150
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
26 décembre 2009
6
3 janv. 2009 à 12:43
3 janv. 2009 à 12:43
Bonjour et merçi !!
Alors je réponds oui et non...
La sortie de fsum est :
pour tout dire mon programme fait ceçi :
Cependant, mon programme marcherait si je n'avais pas le "do inattendu" pour le test du dossier vide de sous-dossiers... mon problème porte plutôt sur çeci.
Sinon, je ne dis pas non si vous arriver a trouver n'importequel programme qui peut me faire un crc32 ...
Merci encore
Alors je réponds oui et non...
La sortie de fsum est :
SlavaSoft Optimizing Checksum Utility - fsum 2.52.00337 Implemented using SlavaSoft QuickHash Library <www.slavasoft.com> Copyright (C) SlavaSoft Inc. 1999-2007. All rights reserved. ; SlavaSoft Optimizing Checksum Utility - fsum 2.52.00337 <www.slavasoft.com> ; ; Generated on 01/03/09 at 12:43:25 ; 23e3f5a1 ?CRC32*acc.exeEt je souhaite coder le resultat pour qu'il devienne :
23e3f5a1je pourrais ensuite me débrouiller pour la mise en forme
pour tout dire mon programme fait ceçi :
si (la chaîne "23e3f5a1" existe dans "acc.exe") alors afficher OK - acc.exe sinon afficher 23e3f5a1 - acc.exe
Cependant, mon programme marcherait si je n'avais pas le "do inattendu" pour le test du dossier vide de sous-dossiers... mon problème porte plutôt sur çeci.
Sinon, je ne dis pas non si vous arriver a trouver n'importequel programme qui peut me faire un crc32 ...
Merci encore
SAW5
Messages postés
111
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 janvier 2010
7
3 janv. 2009 à 13:58
3 janv. 2009 à 13:58
à vrai dire j'ai pas eu le temps (et le courage) de déboguer votre code,
il y a tellement de boucle qu'il est facile de se perdre..voici une autre
solution, qui pourra être avec quelques "corrections" une solution..
il y a tellement de boucle qu'il est facile de se perdre..voici une autre
solution, qui pourra être avec quelques "corrections" une solution..
@Echo off & Setlocal enableextensions enabledelayedexpansion For /f "Tokens=*" %%a In ('dir /a-d /b /s "*.*"') Do call :nxt "%%a" Endlocal & pause & Exit :nxt For /f "Tokens=1-3 delims=*? " %%a In ('fsum -crc32 "%~1" ^|Find "?"') Do ( Echo Ok - %%a - %%c >>Ok.txt) For /f "Tokens=1-5 delims=. " %%A In ('fsum -crc32 "%~1" ^|Find /v "?"') Do ( Echo.%%A - %%A.%%B >>No.txt)
alexpc1
Messages postés
150
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
26 décembre 2009
6
3 janv. 2009 à 17:58
3 janv. 2009 à 17:58
Rebonjour.
Merci pour votre solution, cependant il y a là le même problème que moi :
Tout ce que le programme affiche c'est, pour chacun des fichiers :
Même si il y a des erreurs dans le code, le programme affiche, peu importe dans quoi il est, ces trois lignes. ce qui empêche toute mise en forme de son résultat.
Vous pouvez essayer chez vous, il se passera la même chose, et je n'arrive pas a trouver un autre programme.
merci encore
<edit>je précise que je veux que l'invité de commande affiche les résultats et non pas les fichiers textes...</edit>
Merci pour votre solution, cependant il y a là le même problème que moi :
Tout ce que le programme affiche c'est, pour chacun des fichiers :
SlavaSoft Optimizing Checksum Utility - fsum 2.52.00337 Implemented using SlavaSoft QuickHash Library <www.slavasoft.com> Copyright (C) SlavaSoft Inc. 1999-2007. All rights reserved.
Même si il y a des erreurs dans le code, le programme affiche, peu importe dans quoi il est, ces trois lignes. ce qui empêche toute mise en forme de son résultat.
Vous pouvez essayer chez vous, il se passera la même chose, et je n'arrive pas a trouver un autre programme.
merci encore
<edit>je précise que je veux que l'invité de commande affiche les résultats et non pas les fichiers textes...</edit>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SAW5
Messages postés
111
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
6 janvier 2010
7
4 janv. 2009 à 17:28
4 janv. 2009 à 17:28
Salut,
j'ai pas eu le temps de me pencher sur votre problème, sinon voici une solution...
j'ai pas eu le temps de me pencher sur votre problème, sinon voici une solution...
@ECHO OFF For /f "Tokens=*" %%a In ('dir /a-d /b /s "*.*"') Do call :nxt "%%a" Endlocal & pause & Exit :nxt For /f "Tokens=1-3 delims=*? " %%a In ('fsum -crc32 "%~1" 2^>NUL') Do ( Echo.%%a%%b%%c |Find "CRC32" >NUL IF not ErrorLevel 1 (Echo Ok - %%c) )
alexpc1
Messages postés
150
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
26 décembre 2009
6
13 janv. 2009 à 21:51
13 janv. 2009 à 21:51
Bonsoir
Tout d'abord merci beaucoup!!!! Votre programme est très concis et efficace!
J'ai mis pas mal de temps a analyser et essayer le programme, mais j'ai finalement compris pratiquement tout, si vous avez le temps pouvez vous svp m'expliquer le 'tokens=*', le 'tokens=1-3' et pourquoi il y a un espace après le '*?'.
Merci d'avance.
Ensuite, j'ai intégré le programme dans un autre à moi, vu que ne ne souhaite voir apparaître que les noms de fichiers et non les chemins.
le problème que j'ai est le suivant
j'apelle :check
qui effectue sa tâche en se servant de :nxt
quand il a fini, au lieu de retourner là où je l'ai apellé, :nxt se lance.
en clair le problème simplifié ressemble à ça:
je ne peux pas faire un retour de type goto parce que j'apelle :check deux fois dans le programme...
merci encore !!!!!!!!!!!!
P.S.: je vous met le programme seulement si vous n'arrivez pas a comprendre ce que je voulais dire. Inutile de chercher a le comprendre.
ah oui!!! pourquoi ce '2^' ? '^' n'aurait pas suffi?
Tout d'abord merci beaucoup!!!! Votre programme est très concis et efficace!
J'ai mis pas mal de temps a analyser et essayer le programme, mais j'ai finalement compris pratiquement tout, si vous avez le temps pouvez vous svp m'expliquer le 'tokens=*', le 'tokens=1-3' et pourquoi il y a un espace après le '*?'.
Merci d'avance.
Ensuite, j'ai intégré le programme dans un autre à moi, vu que ne ne souhaite voir apparaître que les noms de fichiers et non les chemins.
le problème que j'ai est le suivant
j'apelle :check
qui effectue sa tâche en se servant de :nxt
quand il a fini, au lieu de retourner là où je l'ai apellé, :nxt se lance.
en clair le problème simplifié ressemble à ça:
echo 1 call :check echo 1.5 pause & exit :check echo 2 call :nxt echo 2.5 :nxt echo 3donne
1 2 3 2.5 3 1.5au lieu de ce que je souhaiterais :
1 2 3 2.5 1.5comment puis-je modifier mon programme pour que :nxt ne se lance pas tout seul lorsque :check a fini ?
je ne peux pas faire un retour de type goto parce que j'apelle :check deux fois dans le programme...
merci encore !!!!!!!!!!!!
P.S.: je vous met le programme seulement si vous n'arrivez pas a comprendre ce que je voulais dire. Inutile de chercher a le comprendre.
@echo off ::test d'existence de sous-répertoires set vide=1 for /f "usebackq delims=" %%b in (`"dir /ad/b"`) do ( if exist %%b set vide=0 ) ::si il y a existence de sous-répertoires if %vide%==0 ( for /f "usebackq delims=" %%c in (`"dir /ad/b | sort /r"`) do ( cd /d %%c call :check ) cd .. ) ::finalement le dossier en cours call :check pause exit :check For /f "Tokens=*" %%a In ('dir /a-d /b "*.*"') Do call :nxt "%%a" :nxt set var=%~1 For /f "Tokens=1-3 delims=*? " %%a In ('fsum -crc32 "%var%" 2^>NUL') Do ( Echo OK - %var% | Find /I "%%a" IF ErrorLevel 1 ( echo %%a - %var% ) )merci !!
ah oui!!! pourquoi ce '2^' ? '^' n'aurait pas suffi?
alexpc1
Messages postés
150
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
26 décembre 2009
6
21 janv. 2009 à 00:16
21 janv. 2009 à 00:16
pour clore le therad, voici le programme final :
il affiche les résultats à l'écran et les enregistre dans txt.txt.
possibilité de fair un fichier texte pour les échecs et un pour les succès.
puisse-cela aider une quelconque personne, pour moi c'est assez !
@echo off ::test d'existence de sous-répertoires set vide=1 for /f "usebackq delims=" %%b in (`"dir /ad/b"`) do if exist %%b set vide=0 ::si il y a existence de sous-répertoires if %vide%==0 ( for /f "usebackq delims=" %%c in (`"dir /ad/b | sort /r"`) do ( cd /d %%c call :check ) cd .. ) ::finalement le dossier en cours call :check pause exit :check For /f "Tokens=*" %%d In ('dir /a-d /b "*.*"') Do ( For /f "Tokens=1 delims=*? " %%a In ('fsum -crc32 "%%d" 2^>NUL') Do ( Echo OK - %%d | Find /I "%%a">>txt.txt Echo OK - %%d | Find /I "%%a" IF ErrorLevel 1 ( echo %%a - %%d>>txt.txt echo %%a - %%d ) ) )
il affiche les résultats à l'écran et les enregistre dans txt.txt.
possibilité de fair un fichier texte pour les échecs et un pour les succès.
puisse-cela aider une quelconque personne, pour moi c'est assez !