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 {{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

Content-ID: 7751866129

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

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

Kraemer
Kraemer 05.07.2023 um 23:30:05 Uhr
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...
em-pie
em-pie 06.07.2023 um 06:51:03 Uhr
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…
pblacky
pblacky 06.07.2023 aktualisiert um 07:42:36 Uhr
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...
7426148943
7426148943 06.07.2023 aktualisiert um 07:52:51 Uhr
Goto Top
COPY /B myfile.ts+NUL myfile.ts >NUL && (
  echo File not in use
) || (
  echo File blocked
)
Meierjo
Meierjo 06.07.2023 aktualisiert um 14:19:59 Uhr
Goto Top
Hallo

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

Gruss
pblacky
pblacky 06.07.2023 aktualisiert um 15:18:22 Uhr
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...
pblacky
pblacky 06.07.2023 um 15:46:42 Uhr
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
7426148943
7426148943 06.07.2023 um 17:00:22 Uhr
Goto Top
Die Schleife ist Murks.
pblacky
pblacky 10.07.2023 um 10:39:34 Uhr
Goto Top
Zitat von @7426148943:

Die Schleife ist Murks.

Ok, kannst du mir einen Tipp geben ?
7426148943
7426148943 10.07.2023 um 12:12:13 Uhr
Goto Top