Показать полную графическую версию : [решено] Как сделать выборку по последней дате файлов???
В определённой папке (назовём её "archive") каждых пол часа создаются архивы БД, в среднем 25 файлов в день... За неделю - месяц их там собирается целая куча...
Какую команду написать в bat-нике, чтобы он копировал файлы только последней даты? (bat-ник запускается по надобности, а не регулярно...).
Заранее спасибо...
В перемнной Dst указываете путь, куда копировать файлы, скрипт в папку с копируемыми файлами лучше не класть, но запускать именно из копируемой папки.
@echo off
SetLocal EnableExtensions
set Dst=C:\TEMP\
set D=.
for /f "tokens=* delims=" %%F in ('dir /a-d /b /o-d') do call :Check "%%F"
goto End
:Check
set Cur=%~t1
set Cur=%Cur:~0,10%
if %D%==. set D=%Cur%
if not %D%==%Cur% (Echo Done & exit)
set stat=Done
copy %1 %Dst% 2>nul 1>nul
if errorlevel 1 set stat=Failed
echo %Stat%: %D% %~1 >>%~dpn0.log
exit /b
:End
@Echo Off
SetLocal enabledelayedexpansion
Rem Здесь указана исходная папка
Set fl=c:\archive
Rem Здесь указана папка приемник
Set Out=c:\lastday
Set lday=00000000
For %%i In ("%fl%\*") Do (
Set fdat=%%~ti
Set fdat=!fdat:~6,4!!fdat:~3,2!!fdat:~0,2!
If !fdat! GTR !lday! Set lday=!fdat!
)
For %%i In ("%fl%\*") Do (
Set fdat=%%~ti
Set fdat=!fdat:~6,4!!fdat:~3,2!!fdat:~0,2!
If !fdat!==!lday! Copy /Y "%%i" "%Out%\%%~nxi"
)
Exit
А что означает переменная D ???
@Echo Off
SetLocal enabledelayedexpansion
Rem Здесь указана исходная папка
Set fl=c:\archive
Rem Здесь указана папка приемник
Set Out=c:\lastday
Set lday=00000000
For %%i In ("%fl%\*") Do (
Set fdat=%%~ti
Set fdat=!fdat:~6,4!!fdat:~3,2!!fdat:~0,2!
If !fdat! GTR !lday! Set lday=!fdat!
)
For %%i In ("%fl%\*") Do (
Set fdat=%%~ti
Set fdat=!fdat:~6,4!!fdat:~3,2!!fdat:~0,2!
If !fdat!==!lday! Copy /Y "%%i" "%Out%\%%~nxi"
)
Exit »
Пробую...
gora, Спасибо помогло...
А можно ещё сделать дополнение, чтобы сразу удалялись файли, не за текущий месяц???
сразу удалялись файли, не за текущий месяц »
@Echo Off
SetLocal enabledelayedexpansion
Rem Здесь указана исходная папка
Set fl=c:\archive
Rem Здесь указана папка приемник
Set Out=c:\lastday
Set tMonth=%Date:~6,4%%Date:~3,2%
Set lday=00000000
For %%i In ("%fl%\*") Do (
Set fdat=%%~ti
Set fMonth=!fdat:~6,4!!fdat:~3,2!
Set fdat=!fdat:~6,4!!fdat:~3,2!!fdat:~0,2!
If Not %tMonth%==!fMonth! Del /F/Q "%%i"
If !fdat! GTR !lday! Set lday=!fdat!
)
For %%i In ("%fl%\*") Do (
Set fdat=%%~ti
Set fdat=!fdat:~6,4!!fdat:~3,2!!fdat:~0,2!
If !fdat!==!lday! Copy /Y "%%i" "%Out%\%%~nxi"
)
Exit
gora, Спасибо огромное =)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.