Forum: PC Hard- und Software html-dateien mittels batch erstellen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jens (Gast)


Lesenswert?

Guten Abend,
ich versuche mittels einer Batch file automatisch HTML-files zu 
erzeugen, welche mir Fotos anzeigen sollen.
Da hänge ich jetzt schon länger an zwei Problemen, wo ich nicht weiter 
komme.

ferh ist im code eigentlich href, wurde mir hier aber als spam gemeldet
1
set MAINFOLDER=C:\Users\Desktop\
2
set ORDNER[0]=2015_Harz
3
4
5
@echo off
6
del index.html
7
echo ^<!DOCTYPE html^> >> index.html
8
echo ^<html lang="de"^> >> index.html
9
echo ^<head^> >> index.html
10
echo ^</head^> >> index.html
11
echo ^<body^> >> index.html
12
13
14
echo ^<h1^>BILDER^</h1^> >> index.html
15
16
for /F "tokens=2 delims==" %%s in ('set ORDNER[') do (
17
  call:myFunc %%s
18
  echo ^<a ferh="%%s.html" target="_self"^>%%s ^</a^> >> index.html
19
)
20
21
echo ^</body^> >> index.html
22
echo ^</html^> >> index.html
23
24
call:endFunc
25
26
:myFunc
27
set FOLDER=%~1
28
set FILE=%~1.html
29
del %FILE%
30
echo ^<!DOCTYPE html^> >> %FILE%
31
echo ^<html lang="de"^> >> %FILE%
32
echo ^<head^> >> %FILE%
33
echo ^</head^> >> %FILE%
34
echo ^<body^> >> %FILE%
35
echo ^<h1^>%FOLDER%^</h1^> >> %FILE%
36
for /f "delims=?" %%i in ('dir /b %MAINFOLDER%%FOLDER% ".\*.jpg"') do @echo ^<a ferh="%%~ni.jpg"^> ^<img src='%%~ni.jpg' width=30%% height=auto/^>^</a^> >> %FILE%
37
echo ^</body^> >> %FILE%
38
echo ^</html^> >> %FILE%
39
goto:eof
40
41
:endFunc

Hier habe ich zwei Probleme:
zu einem die For schleife, wo mir die bilder auflisten soll
1
for /f "delims=?" %%i in ('dir /b %MAINFOLDER%%FOLDER% ".\*.jpg"') do @echo ^<a ferh="%%~ni.jpg"^> ^<img src='%%~ni.jpg' width=30%% height=auto/^>^</a^> >> %FILE%
Habe ich kein Leerzeichen zwischen mainfolder und folder,
bekomme ich zwar eine Link, aber kein Bild. Die Fehlermeldung ist
Die Dateien unter /C:/Users/Desktop/DSC03251.jpg konnten nicht gefunden 
werden.
Es Fehlt hier also der Ordner 2015_Harz
Habe ich ein Leerzeichen Dazwischen, ist die Fehlermeldung
Die Dateien unter /C:/Users/Desktop/.jpg konnten nicht gefunden werden.
Es fehlt hier dann also der Ordner 2015_Harz, sowie der Dateiname.

Das Zweite Problem ist, dass :myFunc ganz zum schluss noch einmal 
ausgeführt wird und mir eine leere .html erzeugt.
Eigentlich springe ich mit call:endFunc doch ans ende. Da ich dort kein 
goto:eof habe, sollte doch auch nicht wieder zurückgesprungen werden.

von Batchman (Gast)


Lesenswert?

Ja, es ist möglich mit dem Kopf durch die Wand. Bloss sind danach Wand 
UND Kopp kaputt; immerhin schmerzt die Wand nicht...

Tu DIR den Gefallen und mach DAS NICHT mit "Batch"! Es ist eines der 
ungeeignetsten Hilfsmittel.

Lade WSL zu W10 nach und mache das mindestens mit bash , noch besser 
mit Python
Dann erreichst Du mit minimalem Aufwand portable Progrämmchen welche 
sowohl unter W10 als auch auf etlichen Unixoiden BS laufen (MacOS, 
Linux, BSD, Solaris, u.v.a.)

von Dietmar S. (Gast)


Lesenswert?

> Es Fehlt hier also der Ordner 2015_Harz
> Habe ich ein Leerzeichen Dazwischen, ist die Fehlermeldung
> Die Dateien unter /C:/Users/Desktop/.jpg konnten nicht gefunden werden.
> Es fehlt hier dann also der Ordner 2015_Harz, sowie der Dateiname.

Vielleicht fehlen die Zugriffsrechte.

Da würde sich doch PHP anbieten. Auf meinem Rechner laufen mittlerweile 
zahlreiche PHP-Scripte, die ich mir so im Laufe der Jahre für die 
verschiedensten Anwendungsfälle geschrieben habe. Unter anderem auch ein 
Script, das aus einem Ordner mit Bildern und Beschreibungen in 
Textdateien eine HTML-Seite mit Unterseiten erzeugt.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ich habe so etwas mal als Shell Script gemacht, sogar noch deutlich 
komplexer mit Werbe-Einblendungen und SMS Empfänger.

Aber als Batch für die cmd.exe? Würde ich mir ncht antun wollen. Da 
würde ich lieber WSL oder CygWin als Unterbau verwenden und habe dann 
all die schönen kleinen Helferlein, die ich von Unix gewohnt bin.

: Bearbeitet durch User
von xyz (Gast)


Lesenswert?

Die
> kleinen Helferlein
gibt es auch ohne weiteren Ballast.

Selbst fuer DOS gab es awk, sed, grep, sort, vi und div. anderes.
Ich benutze z.B. gerne ein Script, das eine Textdatei in eine
HTML-Datei mit verfolgbaren Links verwandelt.

Die Behandlung von Leerzeichen ist im uebrigen immer widerlich.
Wenn man das unbedingt braucht und will, darf man halt nicht
aufgeben.

von c-hater (Gast)


Lesenswert?

xyz schrieb:

> Die Behandlung von Leerzeichen ist im uebrigen immer widerlich.

Jede für interaktive Anwendung designte Scriptsprache ist absolut 
widerlich. Das Problem ist i.d.R. das nötige Quoting. Das ist 
bestenfalls nur für Profis der jeweiligen Sprache durchschaubar.

Leerzeichen sind da noch ein kleineres Problem, aber allein daran 
scheitern viele gescriptete "Kunstwerke" ja schon...

Scripting is evil.

Besser richtig programmieren...

von WIRO (Gast)


Lesenswert?

In Deiner for-Anweisung sind mehrere Fehler enthalten.
Teste bitte diese Form:
1
for /f "tokens=*" %%i in ('dir /b "%MAINFOLDER%%FOLDER%\*.jpg"')...
Ergebnis?

Gruß
WIRO

von WIRO (Gast)


Lesenswert?

Zweites Problem:
Mach aus:
1
call:endFunc
bitte:
1
goto:endFunc
Gruß
WIRO

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.