pbelcl
Goto Top

Abfrage ob Dateien in einem Ordner sind

Dateien mooven aber nur wenn welche da sind

Ich habe eine Downloadplatte wo Videos via FTP-Push vom Onlinetvrecorder runtergeladen werden.
Da die Platte recht klein ist muss ich jeden Tag prüfen ob dort Files sind und diese woanders hinverschieben.

Nun habe ich dazu einige Fragen:

1.) Kann ich per Batch prüfen ob in diesem Ordner überhaupt Dateien sind und diesen "Verschieben Job" nur dann anstossen?

2.) wie kann ich sicherstellen, dass eine Datei erst dann bewegt wird wenn sie Vollständig da ist?
Wenn die Datei gerade runtergeladen wird, kann es bis zu einer Stunde dauern bis sie komplett da ist, in dieser Zeit darf sie natürlich nicht verschoben werden

Habt ihr vielleicht Tipps für mich, wie ich das lösen kann?

Content-Key: 178153

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

Printed on: April 23, 2024 at 15:04 o'clock

Member: bastla
bastla Dec 28, 2011 at 20:24:57 (UTC)
Goto Top
Hallo pbelcl! (Ich schreibe und lese gerne eine Begrüßung.)

Die Frage 1 möchte ich mit einer Gegenfrage beantworten: Was passiert denn, wenn Du nicht vorhandene Dateien verschiebst? face-wink Die folgende "for"-Schleife zeigt, dass das Problem keines ist:
for %%i in ("%Quelle%\*.*") do echo move "%%i" "%Ziel%\"
Noch einfacher:
move "%Quelle%\*.*" "%Ziel%\" 2>nul
macht auch den Job (und keinen Mux, falls es mal keine Dateien gibt) ...

Grüße (ja, mag ich auch)
bastla
Member: pbelcl
pbelcl Dec 29, 2011 at 18:10:56 (UTC)
Goto Top
Hallo bastla,
Zitat von @bastla:
Die Frage 1 möchte ich mit einer Gegenfrage beantworten: Was passiert denn, wenn Du nicht vorhandene Dateien verschiebst? face-wink

Nun ja ich habe mir einen universellen Copyjob gebastelt der mit Parametern gefüttert wird.
Dieser schreibt ausführliche LOG Dateien.

Das heißt ich muss ihn in diesem Fall nur starten wenn auch Dateien da sind, sonst gibt es unnötige Einträge im LOG ...

Mit :

 
if exist *.* 
komme ich nicht weiter!

zum zweiten darfich das File erst kopieren wenn es nicht mehr größer wird, sonst ziehe ich es dem FTP vielleicht während dem Upload unterm Hintern weg.

Deshalb muss ich genau ZWEI dinge in diesem Ordner prüfen:

1.) Sind files da

2.) Sind sie älter wie 2 Stunden
oder werden sie nicht mehr größer

Gibts da irgend eine Möglichkeit?
Member: bastla
bastla Dec 29, 2011 at 19:48:31 (UTC)
Goto Top
Hallo pbelcl!

Dann etwa so:
@echo off & setlocal
set "Ordner=D:\Videodownload"  

for /f "tokens=1,3" %%i in ('dir "%Ordner%" 2^>nul^|findstr /c:"Datei(en)"') do set "Anz=%%i" & set "BytesAlt=%%j"  
if "%Anz%"=="0" echo Keine Dateien gefunden! & goto :eof  

ping -n 15 127.0.0.1 >nul

for /f "tokens=3" %%i in ('dir "%Ordner%"^|findstr /c:"Datei(en)"') do set "BytesNeu=%%i"  
if "%BytesAlt%" neq "%BytesNeu%" echo Dateien unterschiedlich gross! & goto :eof  

echo %Anz% Datei(en) mit %BytesNeu% Bytes vorhanden
Die Wartezeit von etwa 15 Sekunden für den Größenvergleich in Zeile 7 kannst Du natürlich noch anpassen ...

Grüße
bastla
Member: pbelcl
pbelcl Dec 30, 2011 at 06:58:01 (UTC)
Goto Top
Hi bastla,

Du bist wirklich Super!!!!

Ich habe mir ein paar Codeschnipsel zum probieren erwartet, aber die Codezeilen oben sind ja schon die Lösung!!
Und nicht nur das, sie funktionieren auch, habe gerade sie eingebaut...
Speziell die Prüfung der Größe. Auf das wär ich niemals von selbst draufgekommen obwohl es jetzt nachdem ich es sehe eh ganz logisch ist...

Vielen lieben Dank, das hat mir nicht nur sehr geholfen sondern auch viel rumprobieren erspart face-wink

Guten Rutsch und alles Liebe
Paul
Member: bastla
bastla Dec 30, 2011 at 11:57:50 (UTC)
Goto Top
Hallo pbelcl!

Freut mich, wenn's hilft, obwohl:
viel rumprobieren erspart
... ist vielleicht auch ein wenig schade - (eigentlich nur) dadurch lernst Du nämlich das "Batchen" wirklich ...

Auch Dir die besten Wünsche
bastla
Member: pbelcl
pbelcl Dec 30, 2011 at 12:07:01 (UTC)
Goto Top
Zitat von @bastla:
... ist vielleicht auch ein wenig schade - (eigentlich nur) dadurch lernst Du nämlich das "Batchen" wirklich ...

Stimmt grundsätzlich, aber auf deiner Ebene probier ich sowieso nix, da ist die Einstiegshürde zu hoch face-wink
Leider sind diese Dinge nicht gut genug dokumentiert um durch lesen drauf zu kommen.

Aber durch deine Hilfe inspirierst du mich oft, mir anhand deiner "muster" ähnliche Sachen anzusehen, die ich dann umsetze.
Erst heute hab ich wieder eines deiner Codeschnipsel woanders eingebaut und es dort in etwas geänderter Form ausprobiert!

Ist also noch genug Lernpotential da, keine Sorge...

Danke nochmal!

PS: Kann die ja mal ein paar der fertigen batches schicken, wenn es dich interessiert.
Ich glaube allerdings dass die bei einigen davon die Tränen kommen werden face-wink
Funktionieren tun sie trotzdem, meistens jedenfalls ....