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

Показать сообщение отдельно

Ветеран


Contributor


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

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


Не будем вычислять дату завтрешнего дня - не нужно это. Нам надо переместить файл с датой в имени больше чем сегодняшняя. Если сегодня 02.06.2014, преобразуем сегодняшнюю (текущую системную) дату к числу 140602, из имени файла SL030614.DBF вычленим его дату и тоже преобразуем в число 140603. Файл(ы) с датой больше сегодняшней, то есть 140603>140602 перемещаем куда надо, остальные не трогаем
Код: Выделить весь код
@Echo Off

Set "Maska=Z:\SLTEST\sl??????.dbf"
Set "Out=Z:\Finish\"

Set "Now=%Date:~8,2%%Date:~3,2%%Date:~0,2%"

SetLocal EnableExtensions EnableDelayedExpansion

FOR %%f IN ("%Maska%") DO (
	Set "fname=%%~nxf"
	Set "fdate=!fname:~6,2!!fname:~4,2!!fname:~2,2!"
	If !fdate! GTR %Now% Move /Y "%%f" "%Out%" >nul
)
А если уж совсем не думать о датах (это возможно, если в архиве хранятся предыдущие файлы и в исходную папку исходный файл попадает один раз) то получится еще проще, переносим файл(ы), которого нет в архиве
Код: Выделить весь код
@Echo Off

Set "Maska=Z:\SLTEST\sl??????.dbf"
Set "Out=Z:\Finish\"

FOR %%f IN ("%Maska%") DO if not exist "%Out%%%~nxf" Move "%%f" "%Out%" >nul
firstarey,
Цитата:
скрипт не учитывает количество дней в месяце и будет искать архив за 32 число, если запущен 31
но думаю 1 день не критично
не совсем въехал, Ваш скрипт каждый последний день месяца будет работать криво? Искать несуществующий завтрашний день, при этом игнорировать реальный?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 04-06-2014 в 20:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:20, 04-06-2014 | #6