Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сделать выборку по последней дате файлов???

Ответить
Настройки темы
CMD/BAT - [решено] Как сделать выборку по последней дате файлов???

Аватара для Pshek

Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Отправить PM | Цитировать


В определённой папке (назовём её "archive") каждых пол часа создаются архивы БД, в среднем 25 файлов в день... За неделю - месяц их там собирается целая куча...

Какую команду написать в bat-нике, чтобы он копировал файлы только последней даты? (bat-ник запускается по надобности, а не регулярно...).

Заранее спасибо...

Отправлено: 17:35, 04-08-2010

 

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


В перемнной 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

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 18:07, 04-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Pshek

Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, попробую...

Отправлено: 18:09, 04-08-2010 | #3


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:27, 04-08-2010 | #4


Аватара для Pshek

Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Отправить PM | Цитировать


А что означает переменная D ???

Цитата gora:
@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 »

Пробую...

Отправлено: 18:58, 04-08-2010 | #5


Аватара для Pshek

Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Отправить PM | Цитировать


gora, Спасибо помогло...

А можно ещё сделать дополнение, чтобы сразу удалялись файли, не за текущий месяц???

Отправлено: 10:15, 05-08-2010 | #6


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата Pshek:
сразу удалялись файли, не за текущий месяц »
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:44, 05-08-2010 | #7


Аватара для Pshek

Новый участник


Сообщения: 21
Благодарности: 0

Профиль | Отправить PM | Цитировать


gora, Спасибо огромное

Отправлено: 11:06, 05-08-2010 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сделать выборку по последней дате файлов???

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) DIMM2005 Программное обеспечение Windows 36 03-01-2020 16:54
VBS/WSH/JS - [решено] VBS/WSH. Сортировка файлов по дате. rancid Скриптовые языки администрирования Windows 3 23-07-2009 06:38
Прочие БД - SQL запрос на выборку по дате echo off Программирование и базы данных 1 10-06-2009 01:15
как сделать возможным заливку файлов на сайт Demonq Вебмастеру 1 11-03-2009 21:26
как узнать дату последней записи на cd-r? Oleg87 Хочу все знать 3 22-08-2006 13:59




 
Переход