|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файлов по дате создания |
|
|
CMD/BAT - [решено] Копирование файлов по дате создания
|
Новый участник Сообщения: 16 |
Профиль | Отправить 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 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Спасибо, дружище.
|
Отправлено: 10:10, 24-12-2012 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать С новым годом, gora. Возникла проблема со скриптом, не переходит на следующий год 2013. Отсчитывает с 31,12,2012, а не с текущей даты.
Что нужно поменять? Спасибо. Код: :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 |
Отправлено: 09:13, 09-01-2013 | #22 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать @Echo Off SetLocal EnableDelayedExpansion Set folder=e:\Temp\3 3 Set folder1=e:\Temp\222 Set old=5 :: не обрабатывать папки log любой глубины вложения Set exc=log :: не обрабатывать файлы оканчивающиеся на 00001.txt (проверка последних 9 символов имени и расширения файла) Set n=9 Set excFile=00001.txt 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% Echo Now %DD% %MM% %YYYY% Call :GetOldDate %old% Echo Old %DD% %MM% %YYYY% For /R "%folder%" %%s In (.) Do ( Set ts=%%s Set sub=!ts:~0,-2! If /I Not "%%~nxs"=="%exc%" If /I "!sub!"=="!sub:\%exc%\=!" ( For /F "delims=" %%a In ('dir /A:-D /T:C /O:D "!sub!" 2^>Nul ^| Findstr /I /E /c:".txt" /c:".exe"') Do ( Set ta=%%a If Not "!ta:~0,1!"==" " If /I Not "!ta:~-%n%!"=="%excFile%" ( Set name=!ta:~36!& Set dat=!ta:~6,4!!ta:~3,2!!ta:~0,2! If %YYYY%%MM%%DD% GTR !dat! (Echo Copy !dat! !sub!\!name!) Else Echo Not copy !dat! !sub!\!name! ) ) ) ) Pause Exit :GetOldDate Set MM=1%MM%&Set DD=1%DD% Set /A MM-=100, DD-=100 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 |
Отправлено: 09:57, 09-01-2013 | #23 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Спасибо.
|
Отправлено: 10:03, 09-01-2013 | #24 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Теперь другой глюк у него, ставлю копировать файлы старше 5 дней, он копирует только те файлы у которых дата создания в этом году, а у которых дата создания файла 2012 года, он их не копирует. Он файлы эти видит, дату определяет их, но не копирует.
|
Отправлено: 10:54, 09-01-2013 | #25 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Syna:
Замените одну строку: If %YYYY%%MM%%DD% GTR !dat! (Echo Copy !dat! !sub!\!name!) Else Echo Not copy !dat! !sub!\!name! If %YYYY%%MM%%DD% GTR !dat! ( Echo Copy !dat! !sub!\!name! Copy "!sub!\!name!" "%folder1%" ) Else Echo Not copy !dat! !sub!\!name! |
|
Отправлено: 11:32, 09-01-2013 | #26 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Все, нашел косяк. Спасибо.
|
Отправлено: 11:50, 09-01-2013 | #27 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать Доброго времени суток! Есть скрипт который перемещает файлы с одной папки в другую и там уже сортирует их по дате создания Подскажите, что можно сделать с этим скриптом, чтобы он делал все тоже самое, только создавал папку на день раньше чем исходный файл для перемещения? т.е. отслеживал дату создания файла и помещал его в папку с датой раньше на один день.
move "c:\Other\*.*" "c:\Other2\" @Echo OFF&Chcp 866>Nul Set $SCR="c:\Other2\*.*" for %%a in (%$SCR%) do ( for /f "tokens=1-3 delims=/-:., " %%c in ( "%%~ta" ) do MD "%%~dpa%%e_%%d_%%c" 2>Nul&Move "%%a" "%%~dpa%%e_%%d_%%c") |
Отправлено: 14:02, 23-05-2013 | #28 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - [решено] Сортирование файлов по папкам (копирование по дате создания) | 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 |
|