ceraux
Goto Top

Nach Webseite prüfen

Wie kann man mit Batch prüfen ob eine Datei auf einer Homepage ist?
Mein Beispiel (funktioniert leider nicht):

@echo off
ping -n 1 http://xy.de/datei.exe
if errorlevel 1 goto eof
if errorlevel 0 goto 1

:1
echo Erfolgreich
pause

Danke im vorraus,
Ceraux

Content-Key: 285808

Url: https://administrator.de/contentid/285808

Printed on: April 24, 2024 at 12:04 o'clock

Member: pelzfrucht
Solution pelzfrucht Oct 16, 2015, updated at Oct 19, 2015 at 19:43:09 (UTC)
Goto Top
Nur eine Idee wäre: wget.
Das gibts auch für Windows.
A la
Datei in ein Temp Verzeichnis herunterladen > Datei existent? > Ja? Datei löschen und Ergebnis merken. / Nein? Ergebnis merken.

Vielleicht hat wget ja einen Parameter nur um die Existenz zu prüfen ohne die Datei herunterzuladen.

Wenn du es mit wget ausprobieren willst kannst du es hier herunterladen.
Nach der Installation musst du eine Eingabeauffoderung mit Administrator Rechten öffnen und mal unter "C:\Program Files (x86)\gnuWin32\bin" gucken und mit
"wget -h" die Hilfe anzeigen lassen.

Ist nur eine Idee und ausprobiert hab ich es nicht.

Bedenke dass die Nutzung von wget Administrator Rechte erfodert solange du wget im Installationsverzeichnis ausführst und nicht von dort wegkopierst.
Wenn du wget wo anders hin kopierst musst du die DLL Dateien im gleichen Ordner mitkopieren. Wenn du dein Script an jemand auslieferst, muss auf dem Zielsystem
ebenfalls wget verfügbar sein. Ggf. musst du die Lizenzbestimmungen von wget prüfen, wenn du wget mit deinem Script ausliefern willst.

Viele Grüße
pelzfrucht
Member: rubberman
Solution rubberman Oct 17, 2015, updated at Oct 19, 2015 at 19:43:05 (UTC)
Goto Top
Hallo Ceraux.

Ich denke pelzfrucht's Vorschlag wget zu verwenden ist vernünftig. Falls du keine Installation vornehmen willst, mache es so:
Wenn du dem Link folgst findest du unter "Download" die Punkte Binaries und Dependencies. Beide ZIP Dateien herunterladen und auspacken. In der ersten ZIP findest du das Verzeichnis bin und darin wget.exe. Diese kopierst du zu deiner Batchdatei. In der zweiten ZIP, auch wieder im bin Verzeichnis, sind fünf *.dll Dateien zu finden. Diese kopierst du ebenfalls zu deiner Batchdatei.

Der Aufruf sähe etwa so aus:
2>nul wget --spider -q http://xy.de/datei.exe
if errorlevel 1 (
  echo Nicht vorhanden.
) else (
  echo Vorhanden.
)


Ein anpingen von Dateien, wie du es probiert hast, funktioniert natürlich nicht. Windows hat auch sonst kein Kommandozeilentool an Bord mit dem eine Prüfung machbar wäre, es sei denn das Protokoll wäre ftp und nicht http. Ich gehe davon aus dass andere Sprachen dafür bessere Möglichkeiten anbieten.

Grüße
rubberman
Member: colinardo
Solution colinardo Oct 18, 2015 updated at 12:16:02 (UTC)
Goto Top
Hallo zusammen,
oder wenn es ohne externe Zusatztools umgesetzt werden soll:
set "url=http://domain.de/file.exe"  
for /f %%a in ('powershell -ExecutionPolicy ByPass -Command "try{$wr = [System.Net.WebRequest]::Create('%url%');$wr.Timeout = 10000;$wr.Method = 'HEAD';$res = $wr.GetResponse(); if([int]$res.StatusCode -eq 200){$res.Close();return 0}else{$res.close();return 1}}catch{return 1}"') DO @(  
  if "%%a" == "0" (  
      echo Gefunden.
  ) else (
      echo Nicht gefunden.
  )
)
Grüße Uwe