[Résolu]

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

[Résolu]

Message 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
Modifié en dernier par Genele le 13 mai 2018 00:39, modifié 1 fois.
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Extraire une phrase dans un fichier Html et le renommer avec

Message 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.
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Re: Extraire une phrase dans un fichier Html et le renommer avec

Message 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
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Extraire une phrase dans un fichier Html et le renommer avec

Message 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 ?
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Re: Extraire une phrase dans un fichier Html et le renommer avec

Message 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
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Extraire une phrase dans un fichier Html et le renommer avec

Message 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.
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Re: Extraire une phrase dans un fichier Html et le renommer avec

Message 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
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: [Résolu]

Message 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.
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

[Résolu]Extraire une chaîne........

Message 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
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Re: [Résolu]

Message 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
Répondre