Utilisation de la commande echo redirigée vers un fichier - Shell/Batch - Programmation
Marsh Posté le 10-04-2006 à 17:19:35
Si tu as xmllint installé ( ce qui est vraisemblable)
Code :
|
Marsh Posté le 10-04-2006 à 18:09:26
Je ne connais pas xmllint. Je l'ai donc "installé"
Dos ne connait pas la commande sed
Surtout, j'ai pas tout compris a ta commande, car je ne voit pas en quoi elle générera 800 fichiers htm de contenu et de nom incrémenté.
Merci tout de même
Marsh Posté le 10-04-2006 à 19:17:05
Fais attention aux caractères spéciaux comme < et >. L'invite de commandes risque de les interpréter comme les caractères de redirection.
Par exemple :
Code :
|
Marsh Posté le 10-04-2006 à 19:19:58
C'est justement là tout mon problème et la raison de mon post ; contourner cette interpretation
Marsh Posté le 11-04-2006 à 09:09:30
jaimiye a écrit : Je ne connais pas xmllint. Je l'ai donc "installé" |
Ouppps pardon j'avais pas vu que c'était du dos!!!
Par contre ma code génère bien ce que tu veux (sous linux) car xmllint te formate tout seul le flux html .
Donc avec la commande:
Code :
|
on obtiens:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> |
Marsh Posté le 11-04-2006 à 09:50:54
Alors moi ... je suis trop bête.
Je ne sais pas pourquoi hier soir, en testant ^<hello^> et obtenant <hello>, j'en ai déduit que c'était pas bon. J'avais du mettre le cerveau sur off (en réalité je me rappelle que ma dame me tannait pour que je lui serve de répétiteur à ce moment là).
Quoiqu'il en soit, je te remerçie vraiment de ta préçieuse colaboration.
Mais comment le sais tu ? C'est vrai quoi, j'ai cherché deux jours, lu des tonnes de truc. Le ^ je ne l'ai vu nullepart.
Petite question subsidiaire : Si je veux que "%i in (1,1,800)" donne 001 002,003, ... 031... 156 .. au lieu de 1,2,3...31... c'est possible ?
Marsh Posté le 11-04-2006 à 19:46:03
jaimiye a écrit : Petite question subsidiaire : Si je veux que "%i in (1,1,800)" donne 001 002,003, ... 031... 156 .. au lieu de 1,2,3...31... c'est possible ? |
Ce n'est pas possible nativement, mais tu peux "décomposer" le for en 3 boucles différents : [1,9], [10,99] et [100-800].
Voilou
Marsh Posté le 22-04-2006 à 16:37:42
Merci
En fait c'est exactement ce que j'avais fait ;-)
Je mets ci dessous la version finale si ça peut aider quelqu'un
for /L %i in (1,1,9) do echo ^<html^> >E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^<head^> >>E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^<META HTTP-EQUIV="imagetoolbar" CONTENT="no"^>^<title^>adc00%i^</title^> >>E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^</head^> >>E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^<body onload='compt=setTimeout("self.close();",10000)'^> >>E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^<img STYLE="position:absolute; TOP:0px; LEFT:0px;" src="photoadc/adc00%i.jpg"^> >>E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^</body^> >>E:\monchemin\fichier00%i.htm
for /L %i in (1,1,9) do echo ^</html^> >>E:\monchemin\fichier00%i.htm
for /L %i in (10,1,99) do echo ^<html^> >E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^<head^> >>E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^<META HTTP-EQUIV="imagetoolbar" CONTENT="no"^>^<title^>adc0%i^</title^> >>E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^</head^> >>E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^<body onload='compt=setTimeout("self.close();",10000)'^> >>E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^<img STYLE="position:absolute; TOP:0px; LEFT:0px;" src="photoadc/adc0%i.jpg"^> >>E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^</body^> >>E:\monchemin\fichier0%i.htm
for /L %i in (10,1,99) do echo ^</html^> >>E:\monchemin\fichier0%i.htm
for /L %i in (100,1,433) do echo ^<html^> >E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^<head^> >>E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^<META HTTP-EQUIV="imagetoolbar" CONTENT="no"^>^<title^>adc%i^</title^> >>E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^</head^> >>E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^<body onload='compt=setTimeout("self.close();",10000)'^> >>E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^<img STYLE="position:absolute; TOP:0px; LEFT:0px;" src="photoadc/adc%i.jpg"^> >>E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^</body^> >>E:\monchemin\fichier%i.htm
for /L %i in (100,1,433) do echo ^</html^> >>E:\monchemin\fichier%i.htm
(finalement je n'avais besoin que de 433 pages)
Marsh Posté le 22-04-2006 à 16:54:49
Au fait, tu peux combiner tes boucles for pour le même intervalle d'indice de cette manière :
Code :
|
Marsh Posté le 10-04-2006 à 16:57:38
Bonjour
Jessaie décrire un batch pour générer automatiquement des fichiers .htm
Le principe est echo lecontenudemapage > monfichier
Le nom du fichier varie avec la variable %i
Le corps du fichier varie avec la même variable
Ma commande est :
for /L %i in (1,1,800) do echo <html><head></head><body onload='compt=setTimeout("self.close();",15000)'><img style="width: 568px; height: 426px;" alt="" src="mondossier/XXX%i.jpg"></body></html> >E:\monchemin\fichier%i.htm
Outre le problème de mise en forme linéaire, mon souci est que echo interprète les < et >
Si je mets des guillemets, cela génère bien les fichiers, mais les guillemets se retrouvent écrits dans mon fichier.
Jai ce résultat (pour fichier4.htm)
"<"html">""<"head">""<"/head">""<"body onload='compt=setTimeout("self.close();",15000)'">""<"img style="width: 568px; height: 426px;" alt="" src="mondossier/XXX4.jpg"">""<"/body">""<"/html">"
Au lieu du
<html><head></head><body onload='compt=setTimeout("self.close();",15000)'><img style="width: 568px; height: 426px;" alt="" src="PhotoTristan/Tristan004.jpg"></body></html>
escompté.
Idéalement, je voudrais :
<html>
<head>
</head>
<body onload='compt=setTimeout("self.close();",15000)'><img style="width: 568px; height: 426px;" alt="" src="PhotoTristan/Tristan004.jpg">
</body>
</html>
Mais supprimer les guillemets sera déjà pas mal
Merci de vote aide