Created
April 11, 2020 06:50
-
-
Save pgbrandolin/ba22f1d36486899a06d7c15c6ecdef96 to your computer and use it in GitHub Desktop.
[checklockn.bat] Controllo del lock di un file in Windows #dos #lock
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
SETLOCAL EnableDelayedExpansion | |
rem. | |
rem Testing availability of external programs | |
rem. | |
set "THEGNUBIN=C:\Program Files (x86)\GnuWin32\bin" | |
where /q "%THEGNUBIN%:find.exe" || ECHO Could not find GNUWin32 find.exe && EXIT /B | |
where /q "%THEGNUBIN%:date.exe" || ECHO Could not find GNUWin32 date.exe && EXIT /B | |
rem. | |
rem DAYSKEEP : n. di giorni da mantenere | |
rem THEDIR? : directory da controllare e da inserire nel ciclo for (se non nulle!) | |
rem THELOCK : da valutare file per file | |
rem. | |
set "DAYSKEEP=30" | |
set "THEFILE=%~1" | |
set "THELOCK=N/A" | |
set "THEDIR1=D:\ateikon-im\zz_temp" | |
set "THEDIR2=D:\ateikon-im\zzz_delete" | |
set "THEDIR3=" | |
set "THEDIR4=" | |
rem. | |
rem Calcolo preliminare della data di oggi (in secondi dal 1/1/1970) | |
FOR /F "tokens=*" %%F IN ('"%THEGNUBIN%\date.exe" +%%s') DO (SET "THISDATES=%%F") | |
echo s: !THISDATES! | |
rem Versione con find | |
rem. | |
for %%i in ("%THEDIR1%" "%THEDIR2%" ) do ( | |
rem echo Scansione directory: %%i | |
FOR /F "tokens=* usebackq " %%F IN (`CALL "%THEGNUBIN%\find.exe" "%%i" -maxdepth 1 -type f`) DO ( | |
2>nul ( >>%%F (call ) ) && ( set "THELOCK=NO" ) || ( set "THELOCK=YES" ) | |
rem echo File: -%%F- lock: !THELOCK! | |
rem Non si considerano i file nello stato di lock (un processo li sta usando) | |
IF !THELOCK! == NO ( | |
rem Scomposizione del pathname nelle sue componenti: drive,path,name | |
set "MYDRIVE=%%~dF" | |
set "MYPATH=%%~pF" | |
set "MYNAME=%%~nF" | |
rem Estrazione della data yyyymmdd dalla posizione in cui si trova | |
set "MYDATE=!MYNAME:~0,8!" | |
rem Trasformazione della data del file (in secondi dal 1/1/1970) | |
FOR /F "tokens=*" %%F IN ('"%THEGNUBIN%\date.exe" -d !MYDATE! +%%s') DO (SET "FILEDATES=%%F") | |
rem Calcolo della differenza in secondi tra oggi e la data del file | |
set /a DAYDIFF=!THISDATES! - !FILEDATES! | |
set /a DAYDIFF=!DAYDIFF! / 60 / 60 / 24 | |
rem echo info: %%F -- !MYPATH! -- !MYDATE! now:!THISDATES! file:!FILEDATES! - !DAYDIFF! | |
IF !DAYDIFF! GTR !DAYSKEEP! ( | |
echo CANCELLO: %%F -- days: !DAYDIFF! keep: !DAYSKEEP! | |
) else ( | |
echo conservo: %%F -- days: !DAYDIFF! keep: !DAYSKEEP! | |
) | |
) ELSE ( | |
echo File in stato di lock: %%F | |
) | |
) | |
) | |
rem. | |
goto :Continue | |
rem. | |
rem End of script | |
rem. | |
:Continue | |
exit /b 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment