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-Key: 319031

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

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

Member: Kraemer
Kraemer Oct 25, 2016 at 13:21:09 (UTC)
Goto Top
Moin,

warum speicherst du nicht direkt auf die NAS?

Gruß Krämer
Member: pbelcl
pbelcl Oct 25, 2016 at 14:38:05 (UTC)
Goto Top
Weil die Netzwerkverbindung das leider nicht packt face-wink
Und wenn da Probleme sind, dann verlier ich jedes Mal eine Aufnahme!
Member: Endoro
Endoro Oct 25, 2016 at 16:17:18 (UTC)
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
Mitglied: 131301
131301 Oct 25, 2016, updated at Oct 26, 2016 at 11:59:37 (UTC)
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ß
Member: pbelcl
pbelcl Oct 28, 2016 updated at 13:30:01 (UTC)
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:22806891418}} 
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
Mitglied: 131339
131339 Oct 28, 2016 updated at 13:34:11 (UTC)
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
Member: pbelcl
pbelcl Oct 28, 2016 at 13:43:00 (UTC)
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?
Mitglied: 131339
131339 Oct 28, 2016 updated at 13:49:04 (UTC)
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.
Member: Endoro
Endoro Oct 28, 2016 at 15:09:05 (UTC)
Goto Top
Member: pbelcl
pbelcl Oct 30, 2016 updated at 15:07:49 (UTC)
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!