Page 1 sur 2
[Résolu]
Posté : 10 mai 2018 16:08
par Genele
Bonjour à toutes et à tous.
Tout d'abord je voulais vous dire que le site est vraiment bien fait et surtout un grand merci aux programmeurs
qui consacrent du temps pour aider les néophytes dans mon genre.
Mais malgré la qualité des exemples fournis dans le site et sur le forum, je suis encore en plein brouillard....
Il faut dire que je débute...
Ceci étant dit, voila de quoi il s'agit.
J'ai un répertoire dans le c:\ "AAAATest" qui contient plusieurs centaines de fichiers du genre "xxxxx100.html"
J'ai donc du mal à m'y retrouver ....
Par contre lorsque j'en ouvre un, le titre du fichier s'affiche comme ceci : "Liste de musiques des meilleurs guitaristes"
Je voudrais donc les renommer en fonction du titre qui s'affiche lorsqu'on les ouvres et ceci en une seule fois.....
J'ai essayé avec la commande For, Delims, Find, mais il enregistre la totalité des fichiers dans un seul. En fait, le bat concacte l'ensemble des fichiers dans un seul (ce qui fait un fichier très lourd).
Au lieu de prendre chaque fichiers 1 par 1, trouver le titre, puis renommer le même fichier mais avec le titre et l'extension ".html"....
J'ai essayé des tas de combinaisons...en vain.
Voici le bout de code :
@echo off
SETLOCAL EnableDelayedExpansion
set result=
FOR /f "tokens=* delims=<title>" %%i in ('type "c:\AAAATest\*.html" ^|Find "<title"') do set txt=%%i
)
echo.%txt:~54,-8%
pause
echo !txt:~54,-8! >>c:\XXXXfinal.txt
rem Set result /p= < c:\XXXXfinal.txt
set result=c:\XXXXfinal.txt
echo %result%
pause
copy "c:\AAAATest\*.html" "c:\AAAATest\%txt:~54,-8%.Html"
echo 1 fichier copier
ENDLOCAL
pause
Merci pour votre aide.
Cordialement
Genele
Re: Extraire une phrase dans un fichier Html et le renommer avec
Posté : 12 mai 2018 09:28
par barnabe0057
Bonjour,
Pour pouvoir t'aider, il faudrait que je sache ce qu'il y a dans ces fameux fichiers html
Poste le contenu d'au moins 2 fichiers ou bien transmets-moi 2 fichiers.
Re: Extraire une phrase dans un fichier Html et le renommer avec
Posté : 12 mai 2018 11:18
par Genele
Bonjour
Encore merci pour l’intérêt que vous portez à ma question.
En ce qui concerne les fichiers "html", rien de particulier. J'avais réalisé un petit site dédié a la musique qui depuis n'est plus en ligne.
Je m'étais servi de Xwebdesigner pour le faire.
Tous les fichiers possèdent une balise <title>le titre de la page <title>.
je me sert donc de cette balise pour delims dans for.
Cela fonctionne parfaitement.
Le problème est que d'une part je n'arrive pas à traiter la totalité des fichiers du répertoire.
Et la fonction rename ne fonctionne pas.
Je débute vraiment et si cela me passionne j'avoue être décontenancé par la complexité de la commande qui dans d'autres cas fonctionne.
Voici le nouveau code.
@echo off & setlocal enableextensions enabledelayedexpansion
cd c:\AAAATest\
set txt2=
FOR /F "tokens=* delims=<title>" %%i in ('type "c:\AAAATest\*.html" ^|Find "<title"') do (
echo. !rep! > c:\zzrep.txt
rem c:\AAAATest\*.html
set txt2=
set txt2=%%i
SET txt3=!txt2:~57,-8!.html!
rem echo. !txt3! >>c:\zatest2.txt
SET name=!txt3!
echo. !name! >> c:\zzname.txt
rem dir /b >> c:\zzzDir.txt
echo. !rep! !name! >>c:\zoro.txt
rem jusqu'ici tout fonctionne.....sauf que cela ne traite qu'un seul fichier sur plusieur centaine.....
Rem Impossible de renommer les fichiers ?
rename !rep! !name!
)
ENDLOCAL
Merci pour votre compréhension et votre aide
Cordialement
Genele
Re: Extraire une phrase dans un fichier Html et le renommer avec
Posté : 12 mai 2018 12:06
par barnabe0057
Ton delims=<title> ne peut fonctionner, delims n'accepte que des caractères isolés, on ne peut pas lui donner de chaine de caractères.
Voilà comment j'ai fait :
Code : Tout sélectionner
@echo off
Mode con cols=50 lines=25
Title HTML Renamer
setlocal enableextensions
cd C:\AAAATest
for %%G in (*.html) do (
echo. & echo ### %%G
for /f "usebackq tokens=1-3 delims=<>" %%A in ("%%~G") do (
(echo %%B | find "title" >nul) && (ren "%%~G" "%%~C.html")
(echo %%A | find "title" >nul) && (ren "%%~G" "%%~B.html")
)
)
echo. & pause
exit /b 0
Est-ce que cela te convient ?
Re: Extraire une phrase dans un fichier Html et le renommer avec
Posté : 12 mai 2018 15:02
par Genele
Bonjour
Encore merci pour votre aide.
Votre code fonctionne à un ou deux détails prêt...
Vous allez me dire que je pinaille mais bon.....
En premier si le fichier est bien renommer avec le titre trouvé (impeccable), je n'ai pas besoin de toute la longueur.
Une partie me suffit.
Pour cela dans mon code (si on peut appeler cela un code) je pensais pouvoir la couper avec ":~57".....
En fait la chaîne doit démarrer après le 57 éme caractère.
Est 'il possible d'adapter votre code pour le faire....
J'ai bien essayé mais ......
J'espère ne pas abuser de votre temps.
Cordialement
Genele
Re: Extraire une phrase dans un fichier Html et le renommer avec
Posté : 12 mai 2018 17:22
par barnabe0057
Essaie ça :
Code : Tout sélectionner
@echo off
Mode con cols=120 lines=25
Title HTML Renamer
setlocal enableextensions enabledelayedexpansion
for %%G in (*.html) do (
for /f "usebackq tokens=1-3 delims=<>" %%A in ("%%~G") do (
(echo %%B | find "title" >nul) && (call:renommage "%%~G" "%%~C")
(echo %%A | find "title" >nul) && (call:renommage "%%~G" "%%~B")
)
)
echo. & pause
exit /b 0
:renommage
set titre=%~2
set nom=!titre:~57!
echo. & echo ### %~1 ==^>^> !nom!.html
ren "%~1" "!nom!.html"
goto :eof
rem
Quand tu postes du code merci d'utiliser la balise CODE.
Re: Extraire une phrase dans un fichier Html et le renommer avec
Posté : 13 mai 2018 00:37
par Genele
RÉSOLUT.
Bonsoir, résumé de la situation...
Malgré ton travail, ton deuxième code ne fonctionne pas vraiment.
J'en suis donc revenu au premier que tu m'as envoyé qui lui tourne super bien.
Pour résoudre le problème de la longueur de la phrase j'ai pris le problème autrement.
J'ai utilisé le petit logiciel "Remplace texte" et j'ai fait le ménage.
Ensuite j'ai lancé ton bat et mes fichiers sont renommés avec le titre trouvé et la bonne longueur...
Je suis vraiment content du résultat.
Un grand merci pour l'aide et votre patience.
Il ne me reste plus qu'à m'inspirer de votre travail pour continuer à apprendre.
Ceci étant je suis archi débutant en bat mais avec le temps je ne désespère pas d'y arriver un jour.
Votre site va beaucoup m'aider.
Pour moi ce problème est Résolut.
Très cordialement
Genele
Re: [Résolu]
Posté : 13 mai 2018 00:46
par barnabe0057
Bizarre, ça fonctionne bien chez moi. Peut-être un problème avec des caractères spéciaux.
Tu voulais récupérer tout ce qui se trouve après le 57 ème caractère, c'est bien ça ?
Bonne nuit et à bientôt peut-être.
[Résolu]Extraire une chaîne........
Posté : 13 mai 2018 11:16
par Genele
Bonjour
Oui c'est bizarre car le premier code fonctionne super bien à part peut être un problème de lenteur. Mais bon je vois que pour windows c'est très long quand il faut renommer des fichiers.....
J'avais fait un petit bat pour regrouper des fichiers éparpillé sur un DD et je voudrais vous le soumettre pour vérification avant de le donner aux batchers du site.
Je ne crois pas que le sujet ai été abordé.
Rien de bien extraordinaire mais il fonctionne et c'est bien pratique. Je m'en sert pour regrouper mes mp3.
En attendant je vais me pencher sur votre code car il me déroute un peu.
Ces commandes FOR, sont complexes.....
A très bientôt
Cordialement
Genele
Re: [Résolu]
Posté : 13 mai 2018 17:07
par Genele
Bonjour
Votre code est en train de tourner et il renomme mes fichiers.
Seulement de temps à autres, il s'arrête et une fenêtre windows s'affiche avec ce texte.
""Windows ne trouve pas '0'. Verifiez que vous avez entré le nom correct, puis réessayez.""
Je clique sur OK et le programme repart....
Cela m'oblige à rester devant l'ordi pour surveiller le bon déroulement du traitement.
Y aurait il une solution ?
Cordialement
Genele