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)


Bewertung
0 lesenswert
nicht 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
set MAINFOLDER=C:\Users\Desktop\
set ORDNER[0]=2015_Harz


@echo off
del index.html
echo ^<!DOCTYPE html^> >> index.html
echo ^<html lang="de"^> >> index.html
echo ^<head^> >> index.html
echo ^</head^> >> index.html
echo ^<body^> >> index.html


echo ^<h1^>BILDER^</h1^> >> index.html

for /F "tokens=2 delims==" %%s in ('set ORDNER[') do (
  call:myFunc %%s
  echo ^<a ferh="%%s.html" target="_self"^>%%s ^</a^> >> index.html
)

echo ^</body^> >> index.html
echo ^</html^> >> index.html

call:endFunc

:myFunc
set FOLDER=%~1
set FILE=%~1.html
del %FILE%
echo ^<!DOCTYPE html^> >> %FILE%
echo ^<html lang="de"^> >> %FILE%
echo ^<head^> >> %FILE%
echo ^</head^> >> %FILE%
echo ^<body^> >> %FILE%
echo ^<h1^>%FOLDER%^</h1^> >> %FILE%
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%
echo ^</body^> >> %FILE%
echo ^</html^> >> %FILE%
goto:eof

:endFunc

Hier habe ich zwei Probleme:
zu einem die For schleife, wo mir die bilder auflisten soll
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)


Bewertung
0 lesenswert
nicht 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. (didi2)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


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

Gruß
WIRO

von WIRO (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Zweites Problem:
Mach aus:
call:endFunc
bitte:
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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.

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