Batch script to delete file older than 1 day using creation date -
batch script delete file older 1 day.
d means: run date passing through command prompt.
how subtract 1 day in d.
i want delete 1 day old file,the file name starting olddayfile_20140323.txt in same code.
am using below code deleting d (d:current day file) files.
@echo on rem %1 %2 %3 - yyyy mm dd set folder1="c:\fx\in" set folder2="c:\fx\out" set d=%1%2%3% cd /d %folder2% del test1_%1%2%3* del test2_%1%2%3* del test3_%1%2%3*
please note below script working,but it's working modified date files.
forfiles.exe /p c:\fx\out /s /m olddayfile_* /d -1 /c "cmd /c del @file"
please suggest me new batch script.
try below code delete file name of 1 day less current date (format yyyymmdd)
@echo off setlocal call :getdatetime year month day set a=%year%%month%%day% call :subtractdate %year% %month% %day% -1 ret set b=%ret% @echo ###start deleting :: variables set source=g:\ echo ### deleting old backup... del /q /s "%source%\%b%*.*" :subtractdate year month day <+/-days> ret ::adapted dostips functions:: setlocal & set a=%4 set "yy=%~1"&set "mm=%~2"&set "dd=%~3" set /a "yy=10000%yy% %%10000,mm=100%mm% %% 100,dd=100%dd% %% 100" if %yy% lss 100 set /a yy+=2000 &rem adds 2000 2 digit years set /a jd=dd-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4 if %a:~0,1% equ + (set /a jd=%jd%+%a:~1%) else set /a jd=%jd%-%a:~1% set /a l= %jd%+68569, n= 4*l/146097, l= l-(146097*n+3)/4, i= 4000*(l+1)/1461001 set /a l= l-1461*i/4+31, j= 80*l/2447, k= l-2447*j/80, l= j/11 set /a j= j+2-12*l, i= 100*(n-49)+i+l set /a yyyy= i, mm=100+j, dd=100+k set mm=%mm:~-2% & set dd=%dd:~-2% set ret=%yyyy: =%%mm: =%%dd: =% endlocal & set %~5=%ret% exit /b :getdatetime year month day hour minute second @echo off & setlocal /f "tokens=2 delims==" %%a in ('wmic os localdatetime /value') set "dt=%%a" set "yy=%dt:~2,2%" & set "yyyy=%dt:~0,4%" & set "mm=%dt:~4,2%" & set "dd=%dt:~6,2%" set "hh=%dt:~8,2%" & set "min=%dt:~10,2%" & set "sec=%dt:~12,2%" ( endlocal if "%~1" neq "" set "%~1=%yyyy%" if "%~2" neq "" set "%~2=%mm%" if "%~3" neq "" set "%~3=%dd%" if "%~4" neq "" set "%~4=%hh%" if "%~5" neq "" set "%~5=%min%" if "%~6" neq "" set "%~6=%sec%" ) exit /b
Comments
Post a Comment