Dateien kopieren die nicht "in Use" sind
Hallo Leute,
Ich habe eine VU+ mit einer sehr kleinen Festplatte.
Deshalb kopiere ich alle 6 Stunden, die dort aufgenommenen Videos mit einem Batch auf das Video NAS.
Ich habe mir ein komplexes Batch geschrieben, welches das Alter der Files prüft und wenn sie älter wie 3 Stunden sind, dann wird kopiert. Ich bin von der Annahme ausgegangen, dass ich nie lägnere Aufnahmen mache als 200 Minuten.
Als Sicherheit habe ich ein FC eingebaut, welches prüft ob die kopierte Datei mit der ursprünglichen gleich ist.
Anbei das Batch so wie es derzeit läuft.
Es funktioniert grundsätzlich, aber viellleicht habt ihr ja Tipps wie man etwas weniger komplex aufbauen kann.
Vielleucht weiß jemand einen Tipp wie man im Batch feststellen kann ob die Datei auf dem Share noch verändert wird, BEVOR ist sie kopiere?
Ich habe eine VU+ mit einer sehr kleinen Festplatte.
Deshalb kopiere ich alle 6 Stunden, die dort aufgenommenen Videos mit einem Batch auf das Video NAS.
Ich habe mir ein komplexes Batch geschrieben, welches das Alter der Files prüft und wenn sie älter wie 3 Stunden sind, dann wird kopiert. Ich bin von der Annahme ausgegangen, dass ich nie lägnere Aufnahmen mache als 200 Minuten.
Als Sicherheit habe ich ein FC eingebaut, welches prüft ob die kopierte Datei mit der ursprünglichen gleich ist.
Anbei das Batch so wie es derzeit läuft.
Es funktioniert grundsätzlich, aber viellleicht habt ihr ja Tipps wie man etwas weniger komplex aufbauen kann.
Vielleucht weiß jemand einen Tipp wie man im Batch feststellen kann ob die Datei auf dem Share noch verändert wird, BEVOR ist sie kopiere?
@echo off & setlocal
set "Z_LW=v:"
set {{comment_strings:22330113942}}
set {{comment_strings:21071836686}}
set "Q_V=movie"
set "Q_A=.ts"
:DateiPruef
for /f "tokens=1,3" %%i in ('dir "%Q_LW%\%Q_V%" 2^>nul^|findstr /c:"Datei(en)"') do set "Anz=%%i" & set "BytesAlt=%%j"
if "%Anz%"=="0" echo "Keine Dateien gefunden!" & goto end
goto kopieren
:kopieren
for /f "delims= tokens=1-6*" %%a in ('dir "%Q_LW%\%Q_V%\*" /b') do (
%ProgDir%\Util\WasFile.exe "%Q_LW%\%Q_V%\%%a" created before now-200
if not errorlevel 1 set "Q_F=%%a" & call :2
)
goto end
:2
if not exist "%Z_LW%\%Z_V%\" MD "%Z_LW%\%Z_V%\"
xcopy "%Q_LW%\%Q_V%\%Q_F%" "%Z_LW%\%Z_V%" /y /v
fc /l "%Q_LW%\%Q_V%\%Q_F%" "%Z_LW%\%Z_V%\%Q_F%">nul
if errorlevel 1 goto :eof
if errorlevel 0 Del "%Q_LW%\%Q_V%\%Q_F%"
goto :eof
:end
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7751866129
Url: https://administrator.de/contentid/7751866129
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
10 Kommentare
Neuester Kommentar
Moin,
+1 für die Powershell
Und damit dann:
Alle Dateien auf der VU+ ermitteln und Pfad nebst LastWriteTime in ein Objekt speichern. Dann etwas warten (ne halbe Minute) und alle Dateien aus der Liste nutzen und mit den Dateien auf dem System vergleichen (Zeitstempel). Jetzt verschiebst du nur noch die, die sich im Zeitstempel nicht geändert haben…
+1 für die Powershell
Und damit dann:
Alle Dateien auf der VU+ ermitteln und Pfad nebst LastWriteTime in ein Objekt speichern. Dann etwas warten (ne halbe Minute) und alle Dateien aus der Liste nutzen und mit den Dateien auf dem System vergleichen (Zeitstempel). Jetzt verschiebst du nur noch die, die sich im Zeitstempel nicht geändert haben…
COPY /B myfile.ts+NUL myfile.ts >NUL && (
echo File not in use
) || (
echo File blocked
)
Die Schleife ist Murks.