pblacky
Goto Top

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?

@echo off & setlocal 
set "Z_LW=v:"   
set "Z_V=4 - AutoConvert"  
set "Q_LW=U:"  
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 {{comment_strings:22431996579}} 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

Content-Key: 7751866129

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

Printed on: July 22, 2024 at 22:07 o'clock

Member: Kraemer
Kraemer Jul 05, 2023 at 21:30:05 (UTC)
Goto Top
Moin,

1. move wurde schon erfunden
2. wieso verschiebst du nicht alle Dateien, bis auf die neueste?

Gruß

PS: Mit Powershell würde solch ein Code auch noch "schon" aussehen...
Member: em-pie
em-pie Jul 06, 2023 at 04:51:03 (UTC)
Goto Top
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…
Member: pblacky
pblacky Jul 06, 2023 updated at 05:42:36 (UTC)
Goto Top
Tja Leute mit Powershell kenn ich mich leider icht aus, daher arbeite ich auch mit Batch face-wink

Und Move verwende ich deshalb nicht, weil ich sichergehen will, dass die Dateien erst gelöscht werden wenn das alter und der Dateivergleich geklärt sind.

Aber danke trotzdem für eure Tipps...
Mitglied: 7426148943
7426148943 Jul 06, 2023 updated at 05:52:51 (UTC)
Goto Top
COPY /B myfile.ts+NUL myfile.ts >NUL && (
  echo File not in use
) || (
  echo File blocked
)
Member: Meierjo
Meierjo Jul 06, 2023 updated at 12:19:59 (UTC)
Goto Top
Hallo

Wieso speicherst du die Video's nicht gleich direkt auf dem NAS?
Welches BS hast du denn auf der VU+?

Gruss
Member: pblacky
pblacky Jul 06, 2023 updated at 13:18:22 (UTC)
Goto Top
Zitat von @Meierjo:
Wieso speicherst du die Video's nicht gleich direkt auf dem NAS?
Weil mein "NAS" nicht immer läuft face-wink

Welches BS hast du denn auf der VU+?
Es ist ein VTI Image, glaube V 15.x...
Member: pblacky
pblacky Jul 06, 2023 at 13:46:42 (UTC)
Goto Top
Danke @7426148943 für den Code!!
Hab das mal für mich passend zusammengebaut, so hoffe ich!
Er findet auch die Files und zeigt sie richtig an, ich bekomme allerdings immer "not in use"

Auch bei den Files die in der VU gerade aufgenommen werden!!!
Hab ich was falsch gemacht, oder zeigt die VU+ nicht an, dass FIles "in Use sind"

@echo off & setlocal 

set "Z_LW=v:"   
set "Z_V=4 - AutoConvert"  
set "Q_LW=U:"  
set "Q_V=movie"  
set "Q_A=.ts"  

for /f "delims= tokens=1-6*" %%a in ('dir "%Q_LW%\%Q_V%\*" /b') do (  
	COPY /B "%Q_LW%\%Q_V%\%%a"+NUL "%Z_LW%\%Z_V%\%%a" >NUL && (  
	echo File %%a not in use
	) || (
	echo File %%a blocked
	)
)
pause
Mitglied: 7426148943
7426148943 Jul 06, 2023 at 15:00:22 (UTC)
Goto Top
Die Schleife ist Murks.
Member: pblacky
pblacky Jul 10, 2023 at 08:39:34 (UTC)
Goto Top
Zitat von @7426148943:

Die Schleife ist Murks.

Ok, kannst du mir einen Tipp geben ?
Mitglied: 7426148943
7426148943 Jul 10, 2023 at 10:12:13 (UTC)
Goto Top