pbelcl
Goto Top

Dateien kopieren die nicht mehr verändert werden?

Hi Leute,
Ich habe eine Vu+ Receiver der auf die lokale Platte Videos aufnimmt.
Aus administrativen Gründen muss ich die Aufnahmen der Vu+ nach Fertigstellung auf ein NAS verschieben.

Leider werden die Dateien auf der VU+ während der Aufnahme NICHT gesperrt.
Das heißt ich muss irgendwie sicherstellen, dass eine Datei nicht mehr am Aufnehmen ist BEVOR ich sie verschiebe!

Jetzt hab ich hier ein Beispiel gefunden das schon gut funktioniert.
Batch - Dateien verschieben, bis auf die von den letzten 3 Tagen
Es kopiert mir Dateien die älter als einen Tag sind, somit ist sichergestellt, dass keine Dateien beschädigt werden.

Frage:
Ich hätte gerne eine etwas akkuratere Methode verwendet.
Irgendein Batch das prüft ob die Datei noch wächst, und daher beschrieben wird.

Habt ihr Tipps für mich ie man das brauchbar lösen kann?

Content-ID: 319031

Url: https://administrator.de/forum/dateien-kopieren-die-nicht-mehr-veraendert-werden-319031.html

Ausgedruckt am: 23.12.2024 um 07:12 Uhr

Kraemer
Kraemer 25.10.2016 um 15:21:09 Uhr
Goto Top
Moin,

warum speicherst du nicht direkt auf die NAS?

Gruß Krämer
pbelcl
pbelcl 25.10.2016 um 16:38:05 Uhr
Goto Top
Weil die Netzwerkverbindung das leider nicht packt face-wink
Und wenn da Probleme sind, dann verlier ich jedes Mal eine Aufnahme!
Endoro
Endoro 25.10.2016 um 18:17:18 Uhr
Goto Top
Hey,

du könntest prüfen, ob es noch ein Filehandle für die Datei gibt.
Ist aber nur so eine ungetestete Idee.

Gruß, Endoro
131301
131301 25.10.2016, aktualisiert am 26.10.2016 um 13:59:37 Uhr
Goto Top
Oder man öffnet ein FileHandle mit "write", wenn das fehlschlägt weist du das es noch geöffnet ist. Mit Powershell schnell gemacht.
try{
    $f = [IO.File]::OpenWrite("\\Server\Freigabe\test.ts")  
    write-host "Datei nicht gesperrt"  
    $f.Close()
}catch [System.IO.IOException]{
    write-host "Datei gesperrt"  
}
Gruß
pbelcl
pbelcl 28.10.2016 aktualisiert um 15:30:01 Uhr
Goto Top
Danke für das Codeschnipsel, ich hab nur mit der Powershell NULL Erfahrung!
Würde es gerne lieber mit einer Batchdatei prüfen, sofern das möglich ist.
Die Basisroutine für den Job hab ich schon, siehe unten.

Was mir fehlt ist die Routine die verhindert, dass Files verschoben werden, die auf der VU noch aufgenommen werden, also dort geöffnet sind...

echo off & setlocal
chcp 1252

set "Z_LW=p:"   
set "Z_V=Videos"  
set "Q_LW=U:"  
set "Q_V=movies"  

:kopieren
echo.
for /f "delims=" %%i in ('dir /b "%Q_LW%\%Q_V%\*.ts"') do set "Name=%%i" & call :2 "%%i"   
pause
if errorlevel 0 goto end
if errorlevel 1 echo {{comment_strings:22875276028}} 
pause
goto end

:2
if not errorlevel 0 goto fehler
move "%Q_LW%\%Q_V%\%name%" "%Z_LW%\%Z_V%\"  
echo|set /p=.
if not errorlevel 0 goto fehler
goto :eof

:end
131339
131339 28.10.2016 aktualisiert um 15:34:11 Uhr
Goto Top
Nicht weiter schwer ..
@echo off
2>nul (
  >>video.ts echo off
) && (echo Datei ist gesperrt) || (echo Datei ist nicht gesperrt)
Grüße Schluckauf
pbelcl
pbelcl 28.10.2016 um 15:43:00 Uhr
Goto Top
Sorry ich bin beim Batch Profi!

Wenn ich das richtig verstanden habe, versucht dein Batch etwas an die entsprechende Datei anzuhängen und prüft so ab ob sie gesperrt ist?
Oder täusche ich mich?
131339
131339 28.10.2016 aktualisiert um 15:49:04 Uhr
Goto Top
Zitat von @pbelcl:
Sorry ich bin beim Batch Profi!
Wenn du Profi bist solltest du wissen was das Script macht face-smile
Wenn ich das richtig verstanden habe, versucht dein Batch etwas an die entsprechende Datei anzuhängen und prüft so ab ob sie gesperrt ist?
Wenn man versucht in eine Datei zu schreiben muss sie ja mit Schreibzugriff geöffnet werden, wenn das nicht klappt wird die entsprechende Meldung ausgegeben.
Ist es möglich, wird die Datei ohne sie tatsächlich zu verändern im Append-Modus geöffnet und wieder geschlossen und die andere Meldung ausgegeben.
Endoro
Endoro 28.10.2016 um 17:09:05 Uhr
Goto Top
pbelcl
pbelcl 30.10.2016 aktualisiert um 16:07:49 Uhr
Goto Top
Sorry Tippfehler!!
Bin KEIN BatchProfi, sonst müsste ich hier nich so "Blöd" fragen face-wink

Werde eure beiden Tipps ausprobieren, danke vorerst für eure Hilfe!