Un bat qui trouve un nombre dans un fichier

Fermé
philton5000 Messages postés 100 Date d'inscription samedi 27 janvier 2018 Statut Membre Dernière intervention 20 janvier 2021 - 28 sept. 2018 à 02:15
jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 - 29 sept. 2018 à 19:02
Bonjour,
Je cherche a trouver un nombre dans un fichier. Je sais qu'il y a plusieurs façon pour le faire manuellement mais vu qu'il y a plusieurs fichiers ça me prendrais des heures.

Donc j'ai essayer et py sa donne ça

set "destination=C:\Users\---\Desktop\test\test"
set test=1000

cd /d C:\Users\---\Desktop\test || exit /b 1


type *.txt
if type=%test% copy /D /V /Y "%destination%"
pause

c'est juste un teste pour voir comment fonctionne les commandes.
Les commandes que je pense que c'est nécessaire sont;
type (pour trouver mon nombre)
token (pour faire une boucle)
peut-etre "dir" (pour trouver tous les fichier dans le dossier dans lequel je veux trouver mon nombre)

Le reste je suis perdu (%%i ou %%~x

Donc pouvez-vous m'aider
merci de bien vouloir m'aider à le faire et a comprendre
A voir également:

1 réponse

jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235
28 sept. 2018 à 11:37
Bonjour,

D'abord quelques observations :
-
set "destination=C:\Users\---\Desktop\test\test" 
je ne l'aurais pas écrit ainsi mais
set destination="C:\Users\---\Desktop\test\test" 
ou
set destination=C:\Users\---\Desktop\test\test
mais ta syntaxe fonctionne aussi ;-)

- type affiche le contenu des fichiers, mais sur la ligne suivante le if type n'a pas de sens.

La commande idéale pour toi c'est
find
. Lance à la main dans ton répertoire :
FIND /C "1000" *.txt
tu devrais avoir l'indication pour chaque fichier si la chaine est présente ou pas.

Pour les boucles la commande c'est
FOR
, une page de référence sur laquelle je retombe à chaque fois : https://fr.wikibooks.org/wiki/DOS/For#Boucle_sur_le_contenu_d%27un_fichier

Il y a un exemple qui semble avoir été fait pour toi :

@ECHO OFF
FOR /F "tokens=1,2* delims=: " %%A IN ('FIND /C "1000" *.txt') DO (
  IF %%C GTR 0 (
     ECHO Fichier: %%B
     ECHO Nombre d’occurrences : %%C
  )
)


Si cela correspond, tu pourras remplacer les echo par un copy de %%B. Attention ce script ne fonctionnera pas si il y a des blancs dans tes noms de fichiers. le blancs étant l'un des délimiteurs de champs (delims=: ").
0
jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235
Modifié le 28 sept. 2018 à 11:43
Et la commande FINDSTR pourrait s'avérer plus interessante :

https://fr.wikibooks.org/wiki/DOS/Findstr

FINDSTR /M "1000" *.txt
0
philton5000 Messages postés 100 Date d'inscription samedi 27 janvier 2018 Statut Membre Dernière intervention 20 janvier 2021
28 sept. 2018 à 13:02
Merci pour la commande mais il fait seulement dans un dossier j'aimerais le faire dans les sous-dossier
je pense que ça donnerais ça

@ECHO OFF
FOR /F "tokens=1,2* delims=: " %%A IN ('dir /b /s') do (
('FIND /C "1000" *.*') DO (
IF %%C GTR 0 (
ECHO Fichier: %%B
ECHO Nombre d’occurrences : %%C
)
)
)
pause
0
philton5000 Messages postés 100 Date d'inscription samedi 27 janvier 2018 Statut Membre Dernière intervention 20 janvier 2021
28 sept. 2018 à 13:02
mais ça ne marche pas
0
jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235 > philton5000 Messages postés 100 Date d'inscription samedi 27 janvier 2018 Statut Membre Dernière intervention 20 janvier 2021
Modifié le 28 sept. 2018 à 13:39
@echo off
cd /d C:\Users\---\Desktop\test
FOR /R %%i IN (*.txt) DO FINDSTR /M "1000" %%i
pause
0
philton5000 Messages postés 100 Date d'inscription samedi 27 janvier 2018 Statut Membre Dernière intervention 20 janvier 2021
28 sept. 2018 à 21:22
Merci et puis je me demandais si il ne serais pas possible de les replacer automatique
0