Hallo, ich bräuchte etwas Hilfe bei folgendem Problem. Ich kenne mich mir Batchscripten nicht so gut aus. Ausgangssituation auf einem XP Rechner wird eine Logdatei erstellt diese wird immer weiter ergänzt und ab einer bestimmten Größe geleert. Ich will die Inhalte aber nicht verlieren deswegen würde ich die Änderungen gerne in einer neuen Datei ergänzen und diese alle x Minuten per FTP auf einen Server hochladen auf welchen ich von unterwegs Zugriff habe. Oder aber ich würde die Datei in kurzen Intervallen und einem fortlaufendem Dateinamen kopieren. Also Sicherung001.log, Sicherung002.log 1. Gibt es die Möglichkeit eine .bat Datei auszuführen ohne das sich ein störendes Fenster der Eingabeaufforderung öffnet? Unter Vista habe ich für cmd.exe die Option /Q (Befehlsanzeige aus) gefunden entspricht das nur einem @Echo off oder wird dadurch keine Fenster der Eingabeaufforderung geöffnet? Bin gerade nicht am XP Rechner. 2. Den Dateivergleich kann ich ja mit dem Befehl FC durchführen aber wie ich dann eine Aktion ableiten wenn es einen Unterschied in den beiden Dateien gibt? If/Then war das QBasic oder funktioniert das in einer Batch Datei auch? 3. Nun habe ich noch das Problem automatisch das ganze auf den FTP-Server hochzuladen. Per Hand klappt das in der Eingabeaufforderung aber automatisiert klappt es nicht. Vorgehensweise: ftp mein.server.net User> xyz Password> zyx ftp> send Logdatei.log zum automatisieren habe ich mir an das hier http://www.axel-hahn.de/axel/page_compi/bat_ftp.htm gehalten ftp ruft ein script aus einer anderen Datei auf, allerdings funktioniert die Übergabe des Benutzernamens und Passwortes nicht, habe es mit und ohne Klammern probiert gibt es evtl. einen Tastencode für ein Return das man anhängen muss? 4. Wie könnte man das mit der fortlaufenden Dateinummer realisieren?
1. Sieh Dir mal "Geplante Tasks" an. 2. Du musst keine Batchdatei verwenden, sondern kannst auch eine VBScript-Datei (*.vbs) nutzen. Die ist als Kommandozeilenargument an cscript.exe zu übergeben (das ist der Windows Scripting Host, der auch JavaScript versteht). 3. Sieh Dir mal curl an, das ist ein Kommandozeilentool, das Datei-up- und Downloads sowohl via ftp als auch per http erledigen kann. http://curl.haxx.se/
Eine Alternative wäre wput, das auch Dateizeitstempel vergleichen kann und dann nur neuere Files hochlädt, k.A. ob das in dem Fall nützlich wäre. User/PW muss in der URL angegeben werden, das steht so nicht deutlich in der Doku: ftp://user:password@ftp.server.net
danke für deine Vorschläge. Habe es inzwischen hin bekommen mit dem Batch-script hatte einen Buchstabendreher im Benutzernamen. Müsste das jetzt nur noch ohne öffnendes Fenster bewerkstelligen und per Intervall vielleicht kann man irgendwie den Time Befehl auswerten so könnte ich es zumindestens jede Minute machen. Geplante Tasks(Aufgabenplanung) kann ich nur 5 Minuten als kleinstes Intervall einstellen. Wollte das ungern mit zusätzlicher Software sondern mit Bordmitteln lösen, ich werde mir mal VB-Script ansehen
Thomas O. schrieb: > Geplante Tasks(Aufgabenplanung) kann ich nur 5 Minuten als kleinstes > Intervall einstellen. sicher? Ich kann 1 minute einstellen
@Tom: habe deinen Beitrag erst jetzt gelesen da ich vorhin etwas länger zum verfassen gebraucht habe. Deine Lösung funktioniert bei mir zwar in der Browser-Adresszeile aber nicht in der Eingabeaufforderung. wput schau ich mir mal an
Nimm Filezilla, der kann auch eine Bedienung über die Kommandozeile.
Hallo, das Script für den winXP-FTP muß nur genau die Sachen enthalten, die als EIngabe erwartet werden: z.B. als Datei ftp.txt:
1 | open ftp.blabla.de |
2 | benutzername |
3 | password |
4 | |
5 | cd /import |
6 | binary |
7 | |
8 | put daten.csv |
9 | |
10 | bye |
Aufruf dann mit ftp -s:ftp.txt Das kann dann seinerseits natürlich auch aus einer .bat erfolgen. Gruß aus Berlin Michael
Für automatische Verarbeitung ist ncftp erheblich praktischer als das normale ftp Programm. => http://www.ncftp.com/ncftp/
@Michale: Ja das ganze funktioniert ja schon. Was ich jetzt noch benötige wäre 1. Dass das Ganze im Hintergrund notfalls auch minimiert abläuft also sich keine Fenster vor ein anderes öffnet. 2. In kleinen Intervallen automatisch abläuft, z.B. alle 30 Sekunden oder jede Minute 3. und vor allem nicht meine Datei auf dem FTP-Server überschreibt sondern nur erweitert oder eine fortlaufend nummerierte Datei hochlädt, also Log0001.log Log0002.log
ncftpput -A = Append to remote files, instead of overwriting them. Alle 30 Sekunden: CMD-Script im Autostart. Per Task Scheduler geht das nicht. Das geht auch minmiert.
mit ncftpput -a komme ich nicht so klar irgendwie passt immer meine Reihenfolge nicht ich möchte eine Datei die direkt auf c:\ liegt aufs Hauptverzeichniss des Servers legen. ncftpput rufe ich auch direkt von c:\ auf oder muss ich das explizit angeben? -A (Attemp) heist doch ergänzen/ hinzufügen oder? Kannst du mir das mit dem CMD-Script erklären? Ich erstelle ein Script und lege es in den Autostart-Ordner aber welchen Befehl brauche ich im Script, dann kann ich damit googeln gehen.
Thomas O. schrieb: > mit ncftpput -a komme ich nicht so klar irgendwie passt immer meine > Reihenfolge nicht Erst sämtliche Optionen, dann die Dirs/Files: ncftpput -u kosmos -p geheim -A c:\ . test.bat
Thomas O. schrieb: > Ich erstelle ein Script und lege es in den Autostart-Ordner Verknüpfung dorthin legen reicht auch. > aber welchen Befehl brauche ich im > Script, dann kann ich damit googeln gehen. :loop ...hier könnte dein Code stehen... rem Mit Windows Bordmitteln 30 Sekunden warten ping -n 30 localhost >nul goto loop
Ein Konsolfenster als bearbeiteten Screendump zu posten ist schon etwas schräg. Mit Copy&Paste gehts einfacher.
CMD File minimiert starten: start "Unsinn" /min unsinn.cmd
Thomas O. schrieb: > -A (Attemp) heist doch ergänzen/ hinzufügen oder? Fast. Es muss heissen: > -A (Attach) heist doch ergänzen/ hinzufügen oder? citb
ok das nächste mal probiere ich es direkt zu markieren. Jetzt kommt schon wieder das nächste Problem auf. "Dem Client fehlt ein erforderliches Recht" kommt als Antwort auf den Ping Befehl. Wenn ich das Script testweise als Admin starte funktioniert das pingen alle 30 Sekunden als verzögerung aber ncftpput hat Probleme die Datei Test.bat zu öffnen, könnte es sein das ich nur das erste mal den Login durchführen soll und in der Loop schleife nur die Dateien hochlade ohne erneutes Einloggen, denke das es einen Timeout von mind 120 Sekunden gibt wenn ich diesen alle 30 sekunden unterbreche dürfte doch kein neues Einloggen erforderlich sein.
habe das Problem eingegrenzt
>null damit wird doch die Ausgabe nach Null umgeleitet, und da gibts Probleme mit
einer Berechtigung. Gibts auch eine Alternative?
citb schrieb: >> -A (Attemp) heist doch ergänzen/ hinzufügen oder? >> -A (Attach) heist doch ergänzen/ hinzufügen oder? Wie wäre mit dem, was in der Doku steht: append=anhängen.
Thomas O. schrieb: >>null damit wird doch die Ausgabe nach Null umgeleitet, und da gibts Probleme mit > einer Berechtigung. Gibts auch eine Alternative? Ja. Richtig schreiben. So wie ich oben. Kannst das >nul aber auch weglassen. Labert dann eben.
danke jetzt funktioniert zumindestens mal der Upload und die Verzögerung, werde mal morgen den Rest ausprobieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.