Batchdatei erstellen [autom. Download in best. Ordner]

Da muss ich jetzt eine Nacht drüber schlafen wie wir das am besten machen können...
Könntest du mir in der zwischenzeit das HTML File mit der Liste der Updates via PM schicken?
Und am besten auch gleich noch die "dumme" Batchdatei ;)
 
So... weiter gehts ;) Ich habe bei mir am Rechner einige Sachen automatisiert, die sonst sehr Zeitaufwändig wären (Rechnungen runterladen, Logfiles runterladen und Parsen, Backups usw). Ich verwende dafür bei mir lokal PHP. Die folgende Lösung sollte eigentlich alle Anforderungen erfüllen. Lad dir also PHP5 runter und installiere es (Webserver ist nicht nötig - läuft als CLI skript).

Ich habs (denke ich) ausreichend kommentiert, aber bitte denke es auch nocheinmal durch, bevor du es anwendest...

Aufruf auf der Konsole ist einfach "php skriptname.php"

PHP:
<?php

$files   = array();
$newFiles= array();
$baseurl = 'http://www.test.de/';       // URL zur Seite
$index   = $baseurl.'index.html';       // Filename der Seite
$archive = 'x:\\test\\';                // Verzeichnis am Lokalen Rechner mit dem Archiv
$next    = 'x:\\test\\next\\';          // Verzeichnis mit den neuen Files


//HTML Seite Runterladen
$index_content = file_get_contents($index);


//Alle Links zu EXE files suchen und alle doppelten treffer rausschmeißen
//der erste Link auf der Seite ist der erste im Array
preg_match_all("|[0-9]{6}\.EXE|",$index_content,$temp_out, PREG_SET_ORDER);
foreach($temp_out as $file){
	$files[] = $file[0];	
}
$files = array_values(array_unique($files));


//Alle files in den "archiv"-Ordner runterladen die nicht im Archiv sind
foreach($files as $file){
	if(!file_exsists($archive.$file)){
		$newFiles[] = $file; //Das neueste File ist am Anfang des Arrays
		file_put_contents($archive.$file,$baseurl);
	}
}


//Array mit den neuen Files reversen, damit die ältersten, nicht 
//verarbeiteten Files am Anfang stehen...
$newFiles = array_reverse($newFiles);
foreach($newFiles as $file){
	//umbenennen von ddmmyy.exe in next/yymmdd.exe
	$d = substr($file,0,2);
	$m = substr($file,2,2);
	$y = substr($file,4,2);
	copy($archive.$file,$next.$y.$m.$d.'.EXE');
	
	//jetzt sollte im ordner next/ nur das älterste, noch nicht verwendete,
	//File liegen
	system('testerei.bat'); //ggf so ändern, dass es mit next/ arbeitet
	unlink($next.$y.$m.$d.'.EXE'); //Datei aus next/ löschen
}

// Ende - next/ sollte leer sein, alle Files auf der Seite liegen Archiv/ und 
// sind importiert

?>
 
Bin immer wieder begeistert von dir und deiner hilfsbereitschaft. Mensch bist du fix danke ich schaue es mir heut mal an und werde heute abend meinen Senf dazu geben.
Aber erstmal ein dickes DANKE. :)

Nach PHP5 habe ich eben mal gegoogelt aber noch nichts brauchbares gefunden.
Du meinst doch ein Programm mit dem Namen PHP5 oder nur ein Programm welches PHP 5 unterstützt wie z.B. Xampp ?
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bin noch nicht ganz fertig mit studieren hatte heute viel um dir Ohren
 
Zuletzt bearbeitet:
Hi,

PHP5 ist der Interpreter der das Skript ausführen muss (da es in PHP geschrieben ist). Nimm einfach ein Paket von hier: http://www.php.net/downloads.php#v5 Mehr info http://de.wikipedia.org/wiki/PHP
PHP ist mittlerweile die am weitesten verbreitete Sprache wenn es um dynamische Webseiten geht. PHP ist zu 98% im Server-einsatz, man kann es aber auch zu Skripten auf "normalen" Rechnern verwenden. Ein all-in-one-Paket wie Xampp brauchst du nicht. Da wird nur noch ein Apache Webserver (den wir nicht brauchen) und ein MySQL Datenbank Server (den wir auch nicht brauchen) mitinstalliert.
 
Muß mich hier mal einklinken.
War echt interessant diesen Thread zu lesen, auch wenn ich bisher nicht alle Schritte zu 100% nachvollziehen konnte.
Bin auf alle Fälle nicht dümmer geworden.

Es ist immer wieder schön zu sehen wie sich Leute engagieren um anderen zu helfen - versuche ich selbst auch. Ob's immer gelingt ?

Leider gibt es nicht in allen Foeren so uneigennützige Helfer. Ich find's toll.
 
Hi @ Twinsetter 100% wirst du das nicht ganz verstehen können aber zu 90% bestimmt da wein paar Informationen über PM gegangen sind die ich hier nicht veröffentlichen darf.
Will mich ja an die Netikette halten.
------------------------------------------------------------------------------------------------------------------------------------
Nun aber weiter im Thema:
Habe mir PHP5-Paket runtergeladen (php-5.2.2-win32-installer.msi).
Was mir aus dem Script herraus noch nicht ganz klar ist benötigen wir denn jetzt noch die Batch-Datei welche wir schufen oder wird das dadurch das wir die webseite auslesen und die daten in Felder schreiben restlos unnötig und ich brauche somit auch kein wGet mehr ?
|| //HTML Seite Runterladen
|| $index_content = file_get_contents($index);
Aufgrund dessen denke ich mal ja.

Zum umbenennen der Dateien
|| //umbenennen von ddmmyy.exe in next/yymmdd.exe
machst du doch sicherlich nur des besseren sortierens wegen oder irre ich mich da?
weil die eigentliche formatierung ja schon ddmmyy.exe ist.
oder meinst du das das egal ist weil sie bei der anderen Batch ja eh vorm verarbeiten in heute .exe umbenannt wird.

Ins Archiev-Feld "$files = array();" schreibt er alles was er noch nicht
aktualisiert hat richtig?
Und in in das "$newFiles= array();" schreibst du die nächste zu aktualisierende Datei.

Ansonsten hast gut kommentiert habe fast alles nachvollziehen können.

Habe mir das mal alles durch den Kopf gehen lassen und es sollte funktionieren.
Ich denke mal das ich es manuel über den Browser ausführen kann.
Doch wie mache ich das dann automatisiert.
 
Was mir aus dem Script herraus noch nicht ganz klar ist benötigen wir denn jetzt noch die Batch-Datei welche wir schufen oder wird das dadurch das wir die webseite auslesen und die daten in Felder schreiben restlos unnötig und ich brauche somit auch kein wGet mehr ?
|| //HTML Seite Runterladen
|| $index_content = file_get_contents($index);
Aufgrund dessen denke ich mal ja.
JA - wir brauchen kein Wget und dier erste Batch Datei ist auch überflüssig

Zum umbenennen der Dateien
|| //umbenennen von ddmmyy.exe in next/yymmdd.exe
machst du doch sicherlich nur des besseren sortierens wegen oder irre ich mich da?
weil die eigentliche formatierung ja schon ddmmyy.exe ist.
oder meinst du das das egal ist weil sie bei der anderen Batch ja eh vorm verarbeiten in heute .exe umbenannt wird.
Ich hab das nur gemacht, weil wir es in der alten Batch datei auch so gemacht haben. Sortierung sollte egal sein, da immer nur eine File in next-Ordner ist

Ins Archiev-Feld "$files = array();" schreibt er alles was er noch nicht
aktualisiert hat richtig?
Nein - in $files stehen alle Files die auf der Seite gefunden werden (also alle 40)

Und in in das "$newFiles= array();" schreibst du die nächste zu aktualisierende Datei.
Hier stehen alle neue Files. Also die, die in der Liste $files stehen, aber noch nicht im Ordner "Archiv" liegen (also noch nicht runtergeladen wurden). Die Liste (normalerweise 1 File, es sei denn du warst am öfters nicht online) wird dann eins nach dem anderen Runtergeladen und in den Next Ordner kopiert.

Ich denke mal das ich es manuel über den Browser ausführen kann.
Nein - dafür bräuchtest du einen installierten Webserver, der das PHP ausführt

Doch wie mache ich das dann automatisiert.
Wie die Batch Datei auch. Du kannst es einfach auf der Kommandozeile aufrufen
Code:
php script.php

bzw

c:\Programme\...\php.exe script.php
Je nachdem ob das PHP Verzeichnis in deinem "Path" (Umgebungsvariablen) liegt.Den Aufruf kannst du auch in eine Batch Datei schreiben.
 
:) Super probier ich gleich aus vielen lieben Dank schonmal vorne weg. :)
Habe dir eine PM geschickt mit dem Link der Seite.
Schau sie dir mal an. Weiß nähmlich nicht ob das dann so mit dem download er Seite geht.
 
Zuletzt bearbeitet:
Hi,
das war eine gute Idee mit dem Link. Hatte noch einen Fehler im Skript. Hab es jetzt getestet. Er lädt alles wie gewollt runter und behandelt anschließen alle neuen Dateien mit einem Batchfile.

Hier mal die Ausgabe des skripts (Ich habs einmal laufen lassen um alles zu laden und dann einzelne Files rausgelöscht.)

Code:
230507.EXE gefunden 
230507.EXE bereits vorhanden
--------------------------------------------------------------------------------
220507.EXE gefunden 
220507.EXE bereits vorhanden
--------------------------------------------------------------------------------
210507.EXE gefunden 
210507.EXE bereits vorhanden
--------------------------------------------------------------------------------
180507.EXE gefunden 
180507.EXE bereits vorhanden
--------------------------------------------------------------------------------
170507.EXE gefunden 
170507.EXE bereits vorhanden
--------------------------------------------------------------------------------
160507.EXE gefunden 
160507.EXE bereits vorhanden
--------------------------------------------------------------------------------
150507.EXE gefunden 
150507.EXE bereits vorhanden
--------------------------------------------------------------------------------
140507.EXE gefunden 
140507.EXE bereits vorhanden
--------------------------------------------------------------------------------
110507.EXE gefunden 
110507.EXE bereits vorhanden
--------------------------------------------------------------------------------
100507.EXE gefunden 
100507.EXE bereits vorhanden
--------------------------------------------------------------------------------
090507.EXE gefunden 
090507.EXE bereits vorhanden
--------------------------------------------------------------------------------
080507.EXE gefunden 
080507.EXE bereits vorhanden
--------------------------------------------------------------------------------
010507.EXE gefunden 
010507.EXE bereits vorhanden
--------------------------------------------------------------------------------
300407.EXE gefunden 
Starte Download: http://www.[...]/kurse/300407.EXE
Download fertig
--------------------------------------------------------------------------------
270407.EXE gefunden 
270407.EXE bereits vorhanden
--------------------------------------------------------------------------------
260407.EXE gefunden 
260407.EXE bereits vorhanden
--------------------------------------------------------------------------------
250407.EXE gefunden 
250407.EXE bereits vorhanden
--------------------------------------------------------------------------------
240407.EXE gefunden 
240407.EXE bereits vorhanden
--------------------------------------------------------------------------------
230407.EXE gefunden 
230407.EXE bereits vorhanden
--------------------------------------------------------------------------------
200407.EXE gefunden 
200407.EXE bereits vorhanden
--------------------------------------------------------------------------------
190407.EXE gefunden 
190407.EXE bereits vorhanden
--------------------------------------------------------------------------------
180407.EXE gefunden 
180407.EXE bereits vorhanden
--------------------------------------------------------------------------------
170407.EXE gefunden 
170407.EXE bereits vorhanden
--------------------------------------------------------------------------------
130407.EXE gefunden 
130407.EXE bereits vorhanden
--------------------------------------------------------------------------------
120407.EXE gefunden 
120407.EXE bereits vorhanden
--------------------------------------------------------------------------------
100407.EXE gefunden 
100407.EXE bereits vorhanden
--------------------------------------------------------------------------------
090407.EXE gefunden 
090407.EXE bereits vorhanden
--------------------------------------------------------------------------------
060407.EXE gefunden 
060407.EXE bereits vorhanden
--------------------------------------------------------------------------------
050407.EXE gefunden 
050407.EXE bereits vorhanden
--------------------------------------------------------------------------------
300307.EXE gefunden 
Starte Download: http://www.[...]/kurse/300307.EXE
Download fertig
--------------------------------------------------------------------------------
290307.EXE gefunden 
290307.EXE bereits vorhanden
--------------------------------------------------------------------------------
280307.EXE gefunden 
280307.EXE bereits vorhanden
--------------------------------------------------------------------------------
270307.EXE gefunden 
270307.EXE bereits vorhanden
--------------------------------------------------------------------------------
260307.EXE gefunden 
260307.EXE bereits vorhanden
--------------------------------------------------------------------------------
230307.EXE gefunden 
230307.EXE bereits vorhanden
--------------------------------------------------------------------------------
220307.EXE gefunden 
220307.EXE bereits vorhanden
--------------------------------------------------------------------------------
210307.EXE gefunden 
210307.EXE bereits vorhanden
--------------------------------------------------------------------------------
200307.EXE gefunden 
200307.EXE bereits vorhanden
--------------------------------------------------------------------------------
190307.EXE gefunden 
190307.EXE bereits vorhanden
--------------------------------------------------------------------------------
160307.EXE gefunden 
160307.EXE bereits vorhanden
--------------------------------------------------------------------------------
150307.EXE gefunden 
150307.EXE bereits vorhanden
--------------------------------------------------------------------------------
140307.EXE gefunden 
140307.EXE bereits vorhanden
--------------------------------------------------------------------------------
130307.EXE gefunden 
130307.EXE bereits vorhanden
--------------------------------------------------------------------------------
120307.EXE gefunden 
120307.EXE bereits vorhanden
--------------------------------------------------------------------------------
090307.EXE gefunden 
090307.EXE bereits vorhanden
--------------------------------------------------------------------------------
080307.EXE gefunden 
080307.EXE bereits vorhanden
--------------------------------------------------------------------------------
070307.EXE gefunden 
070307.EXE bereits vorhanden
--------------------------------------------------------------------------------
060307.EXE gefunden 
060307.EXE bereits vorhanden
--------------------------------------------------------------------------------
020307.EXE gefunden 
020307.EXE bereits vorhanden
--------------------------------------------------------------------------------
010307.EXE gefunden 
010307.EXE bereits vorhanden
--------------------------------------------------------------------------------
280207.EXE gefunden 
280207.EXE bereits vorhanden
--------------------------------------------------------------------------------
270207.EXE gefunden 
270207.EXE bereits vorhanden
--------------------------------------------------------------------------------
260207.EXE gefunden 
260207.EXE bereits vorhanden
--------------------------------------------------------------------------------
230207.EXE gefunden 
230207.EXE bereits vorhanden
--------------------------------------------------------------------------------
220207.EXE gefunden 
220207.EXE bereits vorhanden
--------------------------------------------------------------------------------
210207.EXE gefunden 
210207.EXE bereits vorhanden
--------------------------------------------------------------------------------
200207.EXE gefunden 
200207.EXE bereits vorhanden
--------------------------------------------------------------------------------
190207.EXE gefunden 
190207.EXE bereits vorhanden
--------------------------------------------------------------------------------
160207.EXE gefunden 
160207.EXE bereits vorhanden
--------------------------------------------------------------------------------
150207.EXE gefunden 
150207.EXE bereits vorhanden
--------------------------------------------------------------------------------
140207.EXE gefunden 
140207.EXE bereits vorhanden
--------------------------------------------------------------------------------
130207.EXE gefunden 
130207.EXE bereits vorhanden
--------------------------------------------------------------------------------
120207.EXE gefunden 
120207.EXE bereits vorhanden
--------------------------------------------------------------------------------
090207.EXE gefunden 
090207.EXE bereits vorhanden
--------------------------------------------------------------------------------
080207.EXE gefunden 
080207.EXE bereits vorhanden
--------------------------------------------------------------------------------
070207.EXE gefunden 
070207.EXE bereits vorhanden
--------------------------------------------------------------------------------
060207.EXE gefunden 
060207.EXE bereits vorhanden
--------------------------------------------------------------------------------
050207.EXE gefunden 
050207.EXE bereits vorhanden
--------------------------------------------------------------------------------
020207.EXE gefunden 
020207.EXE bereits vorhanden
--------------------------------------------------------------------------------
010207.EXE gefunden 
010207.EXE bereits vorhanden
--------------------------------------------------------------------------------
300107.EXE gefunden 
Starte Download: http://www.[...]/kurse/300107.EXE
Download fertig
--------------------------------------------------------------------------------
290107.EXE gefunden 
290107.EXE bereits vorhanden
--------------------------------------------------------------------------------
260107.EXE gefunden 
260107.EXE bereits vorhanden
--------------------------------------------------------------------------------
250107.EXE gefunden 
250107.EXE bereits vorhanden
--------------------------------------------------------------------------------
240107.EXE gefunden 
240107.EXE bereits vorhanden
--------------------------------------------------------------------------------
230107.EXE gefunden 
230107.EXE bereits vorhanden
--------------------------------------------------------------------------------
220107.EXE gefunden 
220107.EXE bereits vorhanden
--------------------------------------------------------------------------------
190107.EXE gefunden 
190107.EXE bereits vorhanden
--------------------------------------------------------------------------------
180107.EXE gefunden 
180107.EXE bereits vorhanden
--------------------------------------------------------------------------------
170107.EXE gefunden 
170107.EXE bereits vorhanden
--------------------------------------------------------------------------------
160107.EXE gefunden 
160107.EXE bereits vorhanden
--------------------------------------------------------------------------------
150107.EXE gefunden 
150107.EXE bereits vorhanden
--------------------------------------------------------------------------------
120107.EXE gefunden 
120107.EXE bereits vorhanden
--------------------------------------------------------------------------------
110107.EXE gefunden 
110107.EXE bereits vorhanden
--------------------------------------------------------------------------------
100107.EXE gefunden 
100107.EXE bereits vorhanden
--------------------------------------------------------------------------------
090107.EXE gefunden 
090107.EXE bereits vorhanden
--------------------------------------------------------------------------------
080107.EXE gefunden 
080107.EXE bereits vorhanden
--------------------------------------------------------------------------------
050107.EXE gefunden 
050107.EXE bereits vorhanden
--------------------------------------------------------------------------------
040107.EXE gefunden 
040107.EXE bereits vorhanden
--------------------------------------------------------------------------------
010107.EXE gefunden 
010107.EXE bereits vorhanden
--------------------------------------------------------------------------------
Batchoutput -- Verarbeite
070130.EXE
-------------------------------------------------------------------------------
Batchoutput -- Verarbeite
070330.EXE
-------------------------------------------------------------------------------
Batchoutput -- Verarbeite
070430.EXE
-------------------------------------------------------------------------------

Hier noch die aktuelle Fassung des Skripts

PHP:
<?php

$files   = array();
$newFiles= array();
$baseurl = 'http://www.[...]/kurse/';       // URL zur Seite
$index   = $baseurl;    			   // Filename der Seite (es gibt keine Index.html)
$archive = 'd:\\test\\';                // Verzeichnis am Lokalen Rechner mit dem Archiv
$next    = 'd:\\test\\next\\';          // Verzeichnis mit den neuen Files


//HTML Seite Runterladen
$index_content = file_get_contents($index);


//Alle Links zu EXE files suchen und alle doppelten treffer rausschmeißen
//der erste Link auf der Seite ist der erste im Array
preg_match_all("|[0-9]{6}\.EXE|",$index_content,$temp_out, PREG_SET_ORDER);
foreach($temp_out as $file){
    $files[] = $file[0];    
}
$files = array_values(array_unique($files));


//Alle files in den "archiv"-Ordner runterladen die nicht im Archiv sind
foreach($files as $file){
	echo $file.' gefunden '."\n";
    if(!file_exists($archive.$file)){
        $newFiles[] = $file; //Das neueste File ist am Anfang des Arrays
        echo 'Starte Download: '.$baseurl.$file."\n";        
        file_put_contents($archive.$file,file_get_contents($baseurl.$file));
		echo 'Download fertig'."\n";        
    }else{
    	echo $file.' bereits vorhanden'."\n";
    }
    echo '--------------------------------------------------------------------------------'."\n";
}


//Array mit den neuen Files reversen, damit die ältersten, nicht 
//verarbeiteten Files am Anfang stehen...
$newFiles = array_reverse($newFiles);
foreach($newFiles as $file){
    //umbenennen von ddmmyy.exe in next/yymmdd.exe
    $d = substr($file,0,2);
    $m = substr($file,2,2);
    $y = substr($file,4,2);
    copy($archive.$file,$next.$y.$m.$d.'.EXE');
    
    //jetzt sollte im ordner next/ nur das älterste, noch nicht verwendete,
    //File liegen
    passthru('D:\\test\\test.bat'); //ggf so ändern, dass es mit next/ arbeitet
    unlink($next.$y.$m.$d.'.EXE'); //Datei aus next/ löschen
}

// Ende - next/ sollte leer sein, alle Files auf der Seite liegen Archiv/ und 
// sind importiert

?>

Meine Test.bat macht nur ein dir/b in das verzeichnis - es zeigt also nur die Dateien im Verzeichnis an. Aber du siehst, es war nur immer ein file drinnen - und dass in der Reihenfolge alt nach neu...

bye
 
Zurück