Batch mit Batch Datei online Bilder herunterladen

Weshalb benennst du die Dateien überhaupt um? So musst du Path ja für jedes Bild anpassen, was natürlich auch kein Problem ist, aber kannst su nicht auch einfach mit
das Objekt direkt downloaden?
 
Hallo! Wieso funktioniert folgende Schleife nicht? Bricht einfach ab und exit..?:
set hour=0

FOR /L %%N in (1, 1, 23) do (

set /a hour=%%N

REM url
if %hour% GEQ 10 (
set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%%hour%00_DL_Visible.jpeg&version=0"
) else (
set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%0%hour%00_DL_Visible.jpeg&version=0"
)

REM path
cd C:\Program Files (x86)\GnuWin32\bin\
set path="C:\Users\Meinname\Desktop\Satellitenbilder"
set file="C:\Users\Meinname\Desktop\Satellitenbilder\Sat%year%%month%%day%-%hour%.jpeg"

REM Ausführung
mkdir %path%
wget -A jpeg -U firefox %url% -O %file%
)

Ich glaube er zeigt vor dem exit kurz irgendwas mit Syntaxfehler der Schleife an...
 
In Zeile 15 fehlen Anführungszeichen:
"\GnuWin32\bin" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
Wenn du ein cmd-Fenster öffnest und von da aus die Batch aufrufst, dann kannst du den ausgeworfenen Syntaxfehler auch lesen, bei direktem Aufruf der Batch geht das Fenster gleich zu.
 
@Simpsonfan: Ich will ja alle Bilder in einem Ordner haben, dazu müssen die unterschiedlich heißen?

Danke. Die Meldung bekomme ich auch und werde deine Lösung später ausprobieren. Die Anführungszeichen fehlen ohne Schleife auch und es funktioniert...
Ergänzung ()

Ich bekomme jetzt:
"DO (" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
 
Die Schleife von Post #22 funktioniert.

Anmerkungen:
Den Ordner ausserhalb der Schleife anlegen.
cd in den wget Ordner kannst du dir sparen, "C:\Program Files (x86)\GnuWin32\bin\wget.exe" reicht.
Die Variablen fuer Tag/Monat/Jahr usw. sind nicht gesetzt.
"set path" solltest du auch aendern. Die Variable PATH ist vom System schon belegt.
Bei "set file" kannst du den bereits konfigurierten Pfad also Variable verwenden.

Code:
@echo off
REM Damit Variablen in der Schleife geaendert werden koennen (http://stackoverflow.com/a/11336710/2710739)
setlocal enableextensions enabledelayedexpansion

set hour=0
set /p day=Tag:
set month=10
set year=2015
set /p hour=Stunde:
set timedif=2
set /a hour=%hour%-%timedif%

REM Pfadangaben ohne Quotes
set imagePath=C:\Users\Meinname\Desktop\Satellitenbilder
set wgetPath=C:\Program Files (x86)\GnuWin32\bin\wget.exe


IF NOT EXIST "%imagePath%" (
    mkdir "%imagePath%"
)

FOR /L %%N in (1, 1, 23) do (

    REM Variablen muessen mit Ausrufezeichen verwendet werden: !hour! !file! !url!
    set /a hour=%%N
    set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%0!hour!00_DL_Visible.jpeg&version=0"
    set file="%imagePath%\Sat%year%%month%%day%-0!hour!.jpg"

    if %%N GEQ 10 (
        set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%!hour!00_DL_Visible.jpeg&version=0"
        set file="%imagePath%\Sat%year%%month%%day%-!hour!.jpg"
    )

    REM Ausfuehrung
    "%wgetPath%" -A jpg -U firefox -O !file! !url!
)


REM Okb Bilder entfernen (http://stackoverflow.com/a/9379723/2710739)
for %%F in ("%imagePath%\*.jpg") do if %%~zF equ 0 del "%%F"
 
Zuletzt bearbeitet: (Code angehaengt)
Welche Variablen müssen in der Schleife mit ! und welche mit % verwendet werden?

Code:
@echo off
setlocal enableextensions enabledelayedexpansion

REM Startbild
color a
echo.
echo.
echo   SATELLITENBILD
echo.
echo   Dieses Programm speichert die gewuenschten Satellitenbilder
echo   in einem Ordner auf dem Desktop
echo.
echo.

REM Variablen
set /p day=Tag:      
set month=10
set year=2015
set hour=0
echo.

REM Pfadangaben
set imagePath=C:\Users\Clemens\Desktop\Satellitenbilder\
set wgetPath=C:\Program Files (x86)\GnuWin32\bin\wget.exe

IF NOT EXIST "%imagePath%" (
    mkdir "%imagePath%"
)


REM SCHLEIFE
FOR /L %%N in (1, 1, 23) DO(
set /a hour=%%N

if %%N GEQ 10 (
set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%!hour!00_DL_Visible.jpeg&version=0"
set file="%imagePath%\Sat%year%%month%%day%-0!hour!.jpeg"
) else (
set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%0!hour!00_DL_Visible.jpeg&version=0"
set file="%imagePath%\Sat%year%%month%%day%-!hour!.jpeg"
)

REM Ausführung
%wgetPath% -A jpeg -U firefox -O !file! !url!
)


REM Ausgabe
cls
echo.
echo.
echo.
echo fertig! Taste druecken zum Anzeigen!
pause > nul

REM Anzeige
start C:\Users\Clemens\Desktop\Satellitenbilder\Sat%year%%month%%day%-01.jpeg
exit

funktioniert nicht...
 
Code:
FOR /L %%N in (1, 1, 23) DO(
zu
Code:
FOR /L %%N in (1, 1, 23) DO (

Alle Variablen die innerhalb der Schleife geaendert werden, muessen so !varname! verwendet werden.

Edit: Die vorangestellte 0 ist auch noch verkehrt.
 
Zuletzt bearbeitet:
Danke!
Die 0 im Filename ist ja egal oder? Finde es schöner so, dann ist jeder Filename gleich lang.
edit: War natürlich im falschen Pfad...
Habe jetzt eine schöne Lösung die toll funktioniert! Danke euch allen! Genau das wollte ich haben :)

Code:
@echo off
setlocal enableextensions enabledelayedexpansion

REM Startbild
color a
echo.
echo.
echo   SATELLITENBILD
echo.
echo   Dieses Programm speichert die gewuenschten Satellitenbilder
echo   in einem Ordner auf dem Desktop
echo.
echo.

REM Variablen
set /p day=Tag:      
set month=10
set year=2015
set hour=0
echo.

REM Pfadangaben
set imagePath=C:\Users\Clemens\Desktop\Satellitenbilder\%year%%month%%day%
set wgetPath=C:\Program Files (x86)\GnuWin32\bin

IF NOT EXIST "%imagePath%" (
    mkdir "%imagePath%"
)


REM SCHLEIFE
FOR /L %%N in (6, 1, 16) DO (
set /a hour=%%N

if %%N GEQ 10 (
set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%!hour!00_DL_Visible.jpeg&version=0"
set file="%imagePath%\Sat%year%%month%%day%-!hour!.jpeg"
) else (
set url="http://www.wetteronline.de/?pid=p_sat_image&ireq=true&src=sat/vermarktung/p_sat_image/geostationary/createImages/wom/%year%/%month%/%day%/Visible/DL/%year%%month%%day%0!hour!00_DL_Visible.jpeg&version=0"
set file="%imagePath%\Sat%year%%month%%day%-0!hour!.jpeg"
)

REM Ausführung
"%wgetPath%\wget.exe" -A jpeg -U firefox !url! -O !file!
)


REM Ausgabe
cls
echo.
echo.
echo.
echo    fertig. Taste druecken zum Anzeigen!
pause > nul

REM Anzeige
start %imagePath%\Sat%year%%month%%day%-06.jpeg
exit

edit: Noch viel schöner mit der Abfrage "set map=BAY,DL,euro: " um verschiedene Bilder zu bekommen ;)
 
Zuletzt bearbeitet von einem Moderator:
Hallo Bagbag,

erstmal danke, auch wenn ich noch Hilfe brauche:
Ich hab das Paket extrahiert, dann finde ich eine Anwendung und noch eine zip. In der zweiten zip sind komische Dinge, die Anwendung lässt sich öffnen. Was muss denn in "Ort" rein? ;) Wenn ich einen Pfad angebe, kommt Error 46, der Remoteserver hat einen Fehler zurückgegeben (400) Ungültige Anforderung.
 
Wenn du die URL eines Bildes anzeigen lässt, findet sich darin der Ortscode. Für Europa ist es beispielsweise "euro", für ganz Deutschland "DL", bei deinem Link im ersten Post wäre es "BAY".

Die Zip in der Zip (Source) beinhaltet den Source Code, da du ja sagtest du würdest gerne lernen...
Das ganze ist in C# geschrieben. Aber wenn du kein C# kannst, wirst du damit nicht viel anfangen können.
Ergänzung ()

Hab grade noch ein Bug entfernt und was kleines an der Oberfläche geändert.

Die Bilder werden übrigens im Ordner "weatherimages", neben der Binary gespeichert.
 

Anhänge

Ah, doof von mir, danke, funktioniert!! :)

Die Sprache C# an sich kenne ich, ich bin nur nicht so fit in den Editoren und Compiler.
- Könntest du kurz beschreiben mit was und wie du das gemacht hast?
- Da sind lauter .sln .config und .cs Dateien, kann ich den Code irgendwo als txt öffnen?
- Wieso C#, ist das das selbe wie Batch oder wird das übersetzt? Wie funktioniert das ganze? :D
 
Relevant sind die 2 Dateien "MainWindow.xaml" (GUI) und "MainWindow.xaml.cs" (eigentlicher Code). Die kannst du mit jedem Texteditor öffnen. Genutzt habe ich Visual Studio 2015.

Wie ich das gemacht habe... Je nach Auswahl werden die Links erzeugt, dann Lade ich den Content der Urls runter. Also im Prinzip macht es das gleiche wie deine Batch Datei.

Wieso C#? Weil ich das gelernt habe.

Es hat überhaupt gar nichts mit Batch zu tun, C# ist eine richtige Programmiersprache (wie z.B. auch C++ oder Java), CMD (Batch) dagegen ist lediglich ein Skriptinterpreter.
 
Zuletzt bearbeitet:
Danke. Der Code kommt mir zwar bekannt vor, sagt mir aber wenig. Die Anwendung werde ich benutzen! So Häkchen für den Ort wären noch gut, und zwar mit: BAY, DL, euro, 0001, namk und afri damit ich es nicht 6 mal laufen lassen muss.
Ansonsten - top!
Dass C# eine Programmiersprache ist weiß ich - der Zusammenhang zu Batch und Windows fehlt mir. Was heißt Skriptinterpreter? Kann Windows C# selbst interpretieren und ausführen?
 
Hab jetzt noch einiges geändert. Du kannst nun in die Textbox mehrere Orte reinschreiben, diese kannst du mit jedem beliebigem Zeichen trennen. Orte dürfen a-z, A-Z und 0-9 beinhalten (ich hoffe das schließt somit alle ein, falls nicht, sag einfach bescheid), siehe Beispiel welches am Anfang eingetragen ist.

Außerdem wird die Auswahl nun in einer Datei gespeichert (weatherimages.xml neben der Binary) und ich habe eine Live-View eingefügt, welche das zuletzt runtergeladene Bild anzeigt.

-----------------------------------

C# ist eine Programmiersprache, ebenso wie auch C/++, Java etc.
Diese werden von einem Compiler kompiliert, also in vom Menschen nicht mehr lesbarem Maschinencode "umgewandelt" (wobei .Net, Java und vermutlich auch einige andere da nicht ganz so simpel sind (siehe JIT und Bytecode)).
Windows an sich kann mit diesem Bytecode nichts anfangen, dafür braucht man dann eine Laufzeitumgebung wie .Net und JRE.

Batch und auch andere Skriptsprachen dagegen werden nicht kompiliert (wobei es auch hier Ausnahmen gibt, ist jedoch nicht mit oben genanntem vergleichbar). Diese werden dann von Interpretern gelesen und ausgeführt. Mann kann ein Skript mit einem Rezept vergleichen, das dem Koch sagt, was er machen muss, genauso wie das Skript dem Interpreter (z.B. cmd.exe) vorgibt, was dieser zu machen hat.
 

Anhänge

Sorry, habe jetzt erst Zeit gefunden.
Fantastisch! So ist es perfekt ;) Danke für alles! ;)
 
Zurück
Oben