Dateien verschieben, die nicht geöffnet sind

  • #1
G

Greagle69

Mitglied
Themenersteller
Dabei seit
13.11.2001
Beiträge
16
Reaktionspunkte
0
Hallo,

ich möchte Dateien, die auf einem Server von Dritten bereitgestellt werden, per Batchdatei regelmäßig verschieben (zu Fuß oder per Scheduler). Wie kann ich aber verhindern, dass Dateien die noch geöffnet sind, oder noch nicht fertig geschrieben sind nicht mit verschoben werden.

Batch soll so aussehen : Move X:\*.* Y:\
 
  • #2
vielleicht hast du ja jemanden der bisschen was programmieren kann.

IF offen, THEN nicht verschieben ;D :-X

sorry, konnt ich mir nicht verkneifen


BoMmL
 
  • #3
Danke, aber was ernstes wer mir lieber gewesen! Ist mal wieder so ne Frage auf die keiner Antworten kann oder will!
 
  • #4
Mit ner Batch mal gar nicht - zum Überprüfen, ob die Datei offen ist oder nicht müsstest du zumindest mal mit VB ran....

Cheers,
Joshua
 
  • #5
Hi

In VB könnte ich es realisieren, wenn das Transfer-Programm die Datei schreib- oder lesegeschützt setzt, solange der Transfer läuft.

Sollte dies nicht der Fall sein, könnte ich es auch so realisieren, dass das Programm die Dateigröße überwacht und erst kopiert, wenn sich die Größe nicht mehr ändert.

Mfg Alexander
 
  • #6
Wäre schön wenn du mir den Code schicken könntest dann könnte ich ein wenig mit VB weiterprobieren. Weil ich hab keine Idee wie es in VB geht.

Gruß Greagle69
MAIL : Email Adresse aus Spamsicherheitsgründen entfernt deine Mail Adresse befindet sich im Briefsymbol unter deinem Namen ;)
 
  • #7
Hi

Setze einen Timer auf deine Form und kopier folgenden Code in den Code-Bereich:

Code:
Option Explicit

Private Const sQuellPfad As String = C:\Test.exe
Private Const sZielPfad As String = D:\Test.exe
Private Const iSekunden As Integer = 120-> Dateiüberprüfungs-Interval

Private iTempSekunden As Integer
Private lLetzteGroeße As Long

Private Sub Form_Load()
 -> Timer stoppen
  Timer1.Enabled = False
  
 -> auf eine Sekunde setzen
  Timer1.Interval = 1000
  
 -> zum ersten Mal die Dateigröße auslesen
  lLetzteGroeße = FileLen(sQuellPfad)
  
 -> Timer wieder starten
  Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
 -> Sekunden hochzählen
  If iSekunden > iTempSekunden Then
    iTempSekunden = iTempSekunden + 1
    Exit Sub
  End If
  iTempSekunden = 0
  
 -> Hat sich die Dateigröße geändert?
  If FileLen(sQuellPfad) <> lLetzteGroeße Then
   -> wenn ja: neue Größe merken
    lLetzteGroeße = FileLen(sQuellPfad)
  Else
   -> wenn nein: Timer stoppen und
   -> Kopiervorgang ausführen 
    Timer1.Enabled = False
    FileCopy sQuellPfad, sZielPfad
  End If
End Sub

Wenn etwas unklar beim Code sein sollte, frag einfach nach ;)

Edit: Code verbessert

Mfg Alexander
 
Thema:

Dateien verschieben, die nicht geöffnet sind

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben