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


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. (Gast)


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.

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.