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

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

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

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


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


Конфигурация

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


Здравствуйте, помогите пожалуйста с батником. Нужно следующие:
Батником про сканировать директорию и скопировать по маске файлы (*.xml и *.txt) и дате создания, именно по созданию не по изменению файла.
Все что я сделал, это про сканировал директорию и вывел дату создания, а как ее привязать к файлам не знаю.
Вот скрипт:

@echo off
SetLocal EnableExtensions
setlocal enableDelayedExpansion

FOR /r "D:\Din" %%f IN (*.*) do (
set nm=%%f
@for /f %%i in ('dir "!nm!" /O:D /A:-D /tc ^| findstr "^[0-9]*\."') do set g=%%i

echo %%f [!g!]

)

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

Отправлено: 11:59, 10-12-2012

 

Ветеран


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

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


Syna, так?
Код: Выделить весь код
@Echo Off
set papka=D:\Din

For /F "delims=" %%a In ('dir /b/s/a-d "%papka%"') Do Echo %%~nxa - %%~ta
pause
exit /b

Отправлено: 20:54, 10-12-2012 | #2



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

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


Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
set folder=e:\Temp 1
For /F "delims=" %%a In ('dir /A:-D /T:C /O:D "%folder%" ^| Findstr /E /c:".txt" /c:".xml"') Do (
	Set ta=%%a
	Set name=!ta:~36!
	Set dat=!ta:~0,10!
	Echo !dat!	!name!
)
Pause
Exit
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:15, 10-12-2012 | #3


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


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

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


Спасибо, "gora", то что нужно, если не трудно, можешь еще в этот скрипт дописать следующие:
нужно копировать эти файлы только, если они меньше даты создания файла.
Например: файл создан 12.12.2012 его копировать не надо, если файл создан 06.12.2012 его надо уже копировать, т.е. интервал -5 дней.
Еще раз, огромное спасибо.

Отправлено: 07:55, 11-12-2012 | #4


Аватара для gora

Ушёл из жизни


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

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


Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
Set folder=e:\Temp
Set old=5

For /F "Tokens=1 Delims=." %%i In ('WMIC OS Get LocalDateTime^|Find "."') Do Set tim=%%i
Set YYYY=%tim:~0,4%&Set MM=%tim:~4,2%&Set DD=%tim:~6,2%
::Call :formatMM_DD
Echo Now	%DD% %MM% %YYYY%
Call :GetOldDate %old%
Echo Old	%DD% %MM% %YYYY%

For /F "delims=" %%a In ('dir /A:-D /T:C /O:D "%folder%" ^| Findstr /E /c:".txt" /c:".xml"') Do (
	Set ta=%%a
	Set name=!ta:~36!& Set dat=!ta:~6,4!!ta:~3,2!!ta:~0,2!
	If %YYYY%%MM%%DD% GTR !dat! (Echo Copy	!dat!	%folder%\!name!) Else Echo Not copy !dat!	%folder%\!name!
)
Pause
Exit

:GetOldDate
Set /A DD-=%1
If %DD% GTR 0 GoTo formatMM_DD
Set /A MM=MM+11-((MM+10)/12)*12
If %MM%==12 Set /A YYYY-=1
For /F "Tokens=%MM%" %%i In ("31 28 31 30 31 30 31 31 30 31 30 31") Do Set X=%%i
If %MM%==2 (
	Set /A B1=YYYY%%4, B2=YYYY%%100, B3=YYYY%%400
	If !B1!==0 If Not !B2!==0 Set /A X+=1
	If !B3!==0 Set /A X+=1
)
Set /A DD=DD+X-((DD+X-1)/X)*X
:formatMM_DD
Set MM=0%MM%&Set DD=0%DD%
Set MM=%MM:~-2%&Set DD=%DD:~-2%
GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:57, 11-12-2012 | #5


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


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

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


Спасибо, огромное, gora. Выручил. Респект тебе.

Отправлено: 12:40, 11-12-2012 | #6


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


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

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


Сегодня только толком просмотрел батник, прошу прощения за тупой вопрос. Скажи, пожалуйста, какую переменную брать для копирования старых файлов? Спасибо.

Отправлено: 07:12, 12-12-2012 | #7


Аватара для gora

Ушёл из жизни


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

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


Напишите в этой строке путь для копирования (Вы его не указали в первом сообщении):
Код: Выделить весь код
	If %YYYY%%MM%%DD% GTR !dat! (Copy "%folder%\!name!" "Path for old files")

Отправлено: 08:17, 12-12-2012 | #8


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


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

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


.
Цитата gora:
Напишите в этой строке путь для копирования (Вы его не указали в первом сообщении):
Код:
If %YYYY%%MM%%DD% GTR !dat! (Copy "%folder%\!name!" "Path for old files") »
Выдает такую ошибку:
Now 12 12 2012
Old 07 12 2012
Непредвиденное появление: /12)*12

If %YYYY%%MM%%DD% GTR !dat! (Copy "%folder%\!name!" "%folder1%")

Отправлено: 09:22, 12-12-2012 | #9


Аватара для gora

Ушёл из жизни


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

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


Цитата Syna:
Выдает такую ошибку:
Now 12 12 2012
Old 07 12 2012
Непредвиденное появление: /12)*12 »
1 Укажите полное название Вашей ОС и ее разрядность.
2 Попробуйте еще раз скопировать скрипт из поста 5 и не меняйте в нем ни чего кроме строки
Код: Выделить весь код
Set folder=e:\Temp
в которой укажите путь к Вашей папке.
3 Приведите здесь путь к этой папке.
4 Покажите вывод скрипта здесь в тегах code
5 Если скрипт продолжает выдавать ошибку, то повторите пп 2-4 для скрипта из поста 3.
6 Приведите значение переменной "%folder1%"
7 Проверьте Ваши пути и имена обрабатываемых файлов на отсутствие спец. символов в них.

Отправлено: 11:09, 12-12-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) DIMM2005 Программное обеспечение Windows 36 03-01-2020 16:54
CMD/BAT - Изменить функцию сортировки файлов - сортировка дб по дате создания а не изменения dark-------13 Скриптовые языки администрирования Windows 2 04-07-2012 17:55
CMD/BAT - Переименование группы файлов по дате создания Serg2010 Скриптовые языки администрирования Windows 8 14-04-2012 00:40
Переименование группы файлов по дате создания Serg2010 AutoIt 1 10-04-2012 10:25
CMD/BAT - [решено] Копирование самого позднего по дате создания каталога. SANIOK_AV Скриптовые языки администрирования Windows 2 04-12-2009 17:29




 
Переход