Modification de plusieurs fichiers avec .bat [Résolu/Fermé]

Signaler
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
-
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
-
Bonjour à tous !

J'ai trouver un code il y a un petit moment de ça pour modifier le nom d'un fichier.

Le but, avoir un nom tel que "TEST" en trop dans un ou plusieurs fichiers ex :
Fichier 1 TEST
Fichier 2 TEST
AUTRE TEST nom de fichier

Une fois exécuté on se retrouve avec :
Fichier 1
Fichier 2
AUTRE nom de fichier

sauf que le bat est configurer en un code fixe et ne peut être exécuté simplement sans option possible avant l'opération.

Voici le code pour en voir plus clair :
@echo off 
setlocal enabledelayedexpansion 
set partieasupprimer=TEST

for /f "delims==" %%F in ('dir /b ^| find "%partieasupprimer%"') do ( 
	 set oldfilename=%%F 
	 set newfilename=!oldfilename:%partieasupprimer%=! 
	 Ren "!oldfilename!" "!newfilename!" 
	 )


j'aimerai qu'au lieu d'avoir set partieasupprimer=TEST, avoir une demande qui se fait pour me demander quel est la parti a supprimer.

Au quel cas le bat s'exécute, la demande attend que je rentre TEST puis le bat continu en modifiant la sélection que j'ai entrer précédemment.

Ce n'est pas compliquer mais je n'y connais pas grand chose et malgré les recherches je ne trouve pas cette partie pour pouvoir avoir exactement ce don j'ai besoin.

Merci infiniment !!!

8 réponses

Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 206
hello
pour demander, remplacer
set partieasupprimer=TEST
par
set /p partieasupprimer=partie à supprimer ?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Bonjour, merci beaucoup dubcek !

Je n'en demande pas plus pour le moment, je cherche pour faire un menu à l'accueil.

Pour choisir entre renommer partiellement, supprimer partiellement ou renommer totalement un nom dans le même bat ;)

Merci encore !
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Bonjour bonjour,

J'ai un autre petit souci depuis l'avancement du batch.
Dite moi si je dois créer un nouveau sujet.

Rien de compliquer mais j'aimerais cette fois remplacer la partie d'un nom par une autre.

Exemple :
document rater.dot devient document réussi.dot

Il y à un menu dedans pour confirmer le remplacement.

Voici le code :
@echo off 

setlocal enabledelayedexpansion
set /p partiearemplacer=Partie a remplacer ?
set /p partieaajouter=Nouvelle partie ?
echo ENTREE pour continuer - R pour recommencer - M pour retourner au menu
set /p reponse="Etes vous sur de vouloir modifier %partiearemplacer% par %partieaajouter% ?"
If /i "%reponse%"=="" continu
If /i "%reponse%"=="r" goto :renommernom
If /i "%reponse%"=="m" goto :menu
for /f "delims==" %%F in ('dir /b ^| find "%partiearemplacer%"') do (
set oldfilename=%%F
set newfilename=!oldfilename:%partiearemplacer%=!
Ren "!oldfilename!" "!newfilename!"
)

Le problème est que je peux définir la nouvelle partie mais je ne sais pas comment faire pour la mettre à la place de la partie à supprimer.

J'ai beau chercher et bidouiller rien y fait.

Merci beaucoup !!

EDIT :

Je viens de trouver !!! Tout simple comme d'habitude...
set newfilename=!oldfilename:%partiearemplacer%=!
À remplacer par :
set newfilename=!oldfilename:%partiearemplacer%=%partieaajouter%! 

À bientôt !
Cordialement.
Jim
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 206
la commande help set explique les manipulations de chaines de caractères
C:> set  nom=document rate.dot

C:> set nom=%nom:rate=reussi%
C:> echo %nom%
document reussi.dot
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Mince, j'avais fait help pour for pensant que la modif commençais par lui.

L'autre point gênant est la polyvalence du changement, comme je fait ce petit outils pour l'utiliser au quotidien sur mon pc et faisant partie des menu contextuel, celui-ci ne doit en aucun cas précisé des emplacements fixe tel que le nom d'un disque, un chemin ou autre pour pouvoir répondre à la demande comme un réel programme sans le farfouiller à chaque besoin.

Merci pour la précision !
Bonne journée.
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 206
la commande for est utile pour segmenter une chaine et effectuer des substitutions plus complexes
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Bonjour, Re ;)

Je reviens sur ce post pour demander si il est possible de récupéré le résultat d'une recherche dans un fichier texte.

J'ai trouver ceci
 findstr "NOM A TROUVER" CHEMIN\RECHERCHE\*.txt >> CHEMIN\RESULTAT\Resultats.txt 

Mais le problème c'est que les chemins sont fixe tandis que le code poster plus haut fait une recherche la ou il est placer grâce à "setlocal enabledelayedexpansion", j'imagine que la recherche est faite avec find et que la direction est désigner par dir dans
for /f "delims==" %%F in ('dir /b ^| find "%partiearemplacer%"') do ( 

Avec %partiearemplacer% soit le/les mot(s) à rechercher donc au lieu de faire ceci après la recherche
set oldfilename=%%F 
set newfilename=!oldfilename:%partiearemplacer%=!
Ren "!oldfilename!" "!newfilename!"
)

Je me demandais si il était possible d'inscrire les résultat dans un fichier txt avec la base du code de ce post.

Merci beaucoup !
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 206
montre un exemple avant - après du texte trouvé et désiré
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Salut dubcek,

je viens de trouver ceci :
@echo off
setlocal enabledelayedexpansion
set /p recherche=Partie a rechercher ?
for /f "tokens=1 delims= " %%a in ('type *.CBA ^| findstr "%recherche%"') do echo %%a >> resultat.txt


Qui me créer bien un fichier contenant la recherche désirer mais qui ne me montre pas le chemin du fichier...

Par exemple j'ai toute une liste de fichier .CBA (fichier texte à l'origine) dedans j'aimerais trouver le mot "TVA" mais quand je lance ce bat il me créer un fichier resultat.txt avec TVA lorsqu'il à trouver TVA dans un fichier hors j'aimerais ce type de resultat dans ce fichier :

C:\chemin\ou\ce\trouve\le\fichier\FICHIERTROUVER.CBA
C:\chemin\ou\ce\trouve\le\fichier\FICHIERTROUVER2.CBA
C:\chemin\ou\ce\trouve\le\fichier\FICHIERTROUVER3.CBA
C:\chemin\ou\ce\trouve\le\fichier\FICHIERTROUVER4.CBA
C:\chemin\ou\ce\trouve\le\fichier\FICHIERTROUVER5.CBA
etc... tan qu'il en trouve ! :D

Le petit extra serais qu'il ne me mette pas de doublon si il y a 2 fois TVA dans un fichier, qu'il ne me l'inscrive pas 2 fois dans le fichier resultat.txt mais ce n'est pas bien important.

Merci à toi !
Cordialement.
Jim
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Petite actualisation :
@echo off
setlocal enabledelayedexpansion
set /p recherche=Partie a rechercher ?
set /p type=Extension de fichier concerne ?
for /f "tokens=1 delims= " %%a in ('type *.%type% ^| findstr "%recherche%"') do echo %%a >> resultat.txt
pause

Remarque, il ne m'affiche que le premier mot d'un ligne par exemple :
LA LIGNE DE TEST TVA

Dans le fichier resultat.txt il va mettre LA au lieu de TVA.

Pas très important vu qu'il faut le chemin et non le mot recherché mais bon.
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 206
tu veux le chemin complet de fichiers qui contiennent le mot TVA (par ex.)
Messages postés
617
Date d'inscription
mardi 30 novembre 2010
Statut
Membre
Dernière intervention
7 décembre 2014
57
Exactement ! 8D
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 206
utiiser l'option /m de findstr pour avoir le nom du fichier qui contient TVA et pas l'extrait du texte