Войти

Показать полную графическую версию : [решено] Копирование файлов по дате создания


Страниц : 1 [2]

Syna
24-12-2012, 10:10
Спасибо, дружище. :clapping: :up

Syna
09-01-2013, 09:13
С новым годом, 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

gora
09-01-2013, 09:57
@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

Syna
09-01-2013, 10:03
Спасибо. :)

Syna
09-01-2013, 10:54
Теперь другой глюк у него, ставлю копировать файлы старше 5 дней, он копирует только те файлы у которых дата создания в этом году, а у которых дата создания файла 2012 года, он их не копирует. Он файлы эти видит, дату определяет их, но не копирует. :(

gora
09-01-2013, 11:32
у которых дата создания файла 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.
Для продолжения нажмите любую клавишу . . .

Syna
09-01-2013, 11:50
Все, нашел косяк. Спасибо.

Михаил_Басалаев@fb
23-05-2013, 14:02
Доброго времени суток! Есть скрипт который перемещает файлы с одной папки в другую и там уже сортирует их по дате создания Подскажите, что можно сделать с этим скриптом, чтобы он делал все тоже самое, только создавал папку на день раньше чем исходный файл для перемещения? т.е. отслеживал дату создания файла и помещал его в папку с датой раньше на один день.

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")




© OSzone.net 2001-2012