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

Компьютерный форум 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

 

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


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

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


Спасибо, дружище.

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



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

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


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


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

Профиль | Отправить 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


Аватара для gora

Ушёл из жизни


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

Профиль | Отправить 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
Благодарности: 0

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


Спасибо.

Отправлено: 10:03, 09-01-2013 | #24


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


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

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


Теперь другой глюк у него, ставлю копировать файлы старше 5 дней, он копирует только те файлы у которых дата создания в этом году, а у которых дата создания файла 2012 года, он их не копирует. Он файлы эти видит, дату определяет их, но не копирует.

Отправлено: 10:54, 09-01-2013 | #25


Аватара для gora

Ушёл из жизни


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

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


Цитата Syna:
у которых дата создания файла 2012 года, он их не копирует. »
У меня все копирует как надо.
Замените одну строку:
Код: Выделить весь код
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!
И копирует и пишет, что скопировано!
Код: Выделить весь код
Now     09 01 2013
Old     04 01 2013
Copy    20120327        e:\Temp\3 3\GOMPLAYERRUSETUP.EXE
Скопировано файлов:         1.
Copy    20120327        e:\Temp\3 3\DAEMONToolsPro500316-0317.exe
Скопировано файлов:         1.
Copy    20120327        e:\Temp\3 3\setup.exe
Скопировано файлов:         1.
Not copy 20130109       e:\Temp\3 3\rewrite.txt
Not copy 20130109       e:\Temp\3 3\Default.txt
Not copy 20130109       e:\Temp\3 3\EmEditor.Professional.v12.0.8.txt
Not copy 20130109       e:\Temp\3 3\DFH_Download_Manager.exe
Copy    20121212        e:\Temp\3 3\12345667.txt\4\archOS.exe
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\12345667.txt\4\emeditor.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\12345667.txt\4\memetest.au2.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\12345667.txt\4\7zip\каналы.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\12345667.txt\4\7zip\ключ remove admin.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\12345667.txt\4\7zip\Красная Талка.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\12345667.txt\4\7zip\настройки Vbox.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\222\дропбох.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\222\контакты.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\222\перевозка.txt
Скопировано файлов:         1.
Copy    20121224        e:\Temp\3 3\222\телефон.txt
Скопировано файлов:         1.
Copy    20120327        e:\Temp\3 3\setup\instmsia.exe
Скопировано файлов:         1.
Copy    20120327        e:\Temp\3 3\setup\instmsiw.exe
Скопировано файлов:         1.
Для продолжения нажмите любую клавишу . . .
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:32, 09-01-2013 | #26


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


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

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


Все, нашел косяк. Спасибо.

Отправлено: 11:50, 09-01-2013 | #27


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


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

Профиль | Сайт | Отправить 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



Компьютерный форум 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




 
Переход