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 !!!
A voir également:
Batch renommer une partie du nom de plusieurs fichiers
Renommer une partie du nom de plusieurs fichiers - Meilleures réponses
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%!
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.
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.
@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.
@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.