|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Копировать файлы из одной папки в другую с помощью XCOPY |
|
|
CMD/BAT - Копировать файлы из одной папки в другую с помощью XCOPY
|
Новый участник Сообщения: 13 |
Здравствуйте,
использую команду xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "путь откуда" "путь куда". Данная команда копирует все файлы, которые были модифицированы сегодняшним днем. Подскажите, пожалуйста, как мне написать данную команду, чтобы копировались все файлы, дата изменения которых больше 7 дней, те сегодня 13.08 файл1 изменен 05.08 файл2 изменен 07.08 батник должен скопировать только файл1. файл2 нет. Заранее благодарен всем откликнувшимся за помощь. |
|
Отправлено: 13:55, 13-08-2018 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:30, 13-08-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать alpap, а каким образом можно в командной строке высчитать дату по формуле: ТекДата - 7 дней ?
заранее спасибо |
Отправлено: 15:12, 13-08-2018 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата Sargezzz:
Цитата Екклесиаст:
Вот код
@Echo Off cls Set "DeltaDay=-7" Call :FromDate %DeltaDay% %Date% "yyyymmdd" Echo %Date% %DeltaDay% %yyyymmdd% pause GoTo :Eof :FromDate rem Пересчет даты на заданное кол-во дней rem В первом аргументе +- дни rem Во втором аргументе дата в формате dd.mm.yyyy rem В третем аргументе имя переменной в кавычках где получим новую дату в формате yyyymmdd rem Заимствовано http://forum.oszone.net/thread-186889.html rem вызов Call :FromNow %DeltaDay% %Date% "yyyymmdd" rem результат в перемменной %yyyymmdd% SetLocal Set "DT=%~2" Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11 Set /A J=J+2-12*L,I=100*(N-49)+I+L Set /A yyyy=I,mm=100+J,dd=100+K EndLocal& Set "%~3=%yyyy%%mm:~-2%%dd:~-2%" GoTo :Eof |
||
------- Отправлено: 15:30, 13-08-2018 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sargezzz,
Разницу между текущей датой и датой изменения конкретного файла можно посчитать проще
@Echo Off cls FOR /F "tokens=1,2,3 delims=. " %%i IN ("%Date%") DO Set /A D1=1%%i-100, M1=1%%j-100, Y1=%%k Call :JulianDay %D1% %M1% %Y1% "ND1" Pushd "Z:\Box_In" FOR /F "usebackq delims=" %%i IN (`2^>nul Dir /B /A:-D "list.txt"`) DO Set "Date2=%%~ti" Popd FOR /F "tokens=1,2,3 delims=. " %%i IN ("%Date2%") DO Set /A D2=1%%i-100, M2=1%%j-100, Y2=%%k Call :JulianDay %D2% %M2% %Y2% "ND2" Set /A ND=%ND1%-%ND2% Echo (%Date%)-(%Date2%)=%ND1%-%ND2%=%ND% Pause GoTo :Eof rem Вычисляет абсолютный номер дня по юлианскому календарю rem На входе dd mm yyyy rem На выходе имя переменной в кавычках четвёртым аргументом :JulianDay Set /A %~4=(1461*(%3+4800+(%2-14)/12))/4+(367*(%2-2-12*((%2-14)/12)))/12-(3*((%3+4900+(%2-14)/12)/100))/4+%1-32075 exit /b |
|
------- Последний раз редактировалось megaloman, 13-08-2018 в 16:20. Отправлено: 16:14, 13-08-2018 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Sargezzz:
@echo off cd /d "C:\papka" for /f "delims=" %%i in ('forfiles /s /d -7') do del /f /s /q "%%i" pause для копирования del с ключами поменять на copy |
|
Отправлено: 16:17, 13-08-2018 | #6 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать alpap,
выполняю батник с кодом: cd /d "D:\Resource" for /f "delims=" %%i in (forfiles /s /d -7) do xcopy /f /s /y "D:\Resource\" "D:\files\" "%%i" pause пишется ответ: "The system cannot find the file forfiles." в чем моя ошибка? |
Отправлено: 17:34, 13-08-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Sargezzz:
Либо: for /f "delims=" %%i in ('forfiles /s /d -7') do xcopy /f /s /y "D:\Resource\" "D:\files\" "%%i" |
|
Отправлено: 18:02, 13-08-2018 | #8 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать Iska,
спасибо за помощь, я пробовал и с кавычками, D:\Resource>for /F "delims=" %i in ('forfiles /s /d -7') do xcopy /f /s /y "D:\Resource\" "D:\files\" "%i" в командной строке просто выводится выше стоящее и больше ничего не происходит. Iska, когда пробую второй вариант, тогда результат следующий: C:\Windows\system32>cd /d "D:\Resource" D:\Resource>for /F "usebackq delims=" %i in ('forfiles /s /d -7') do xcopy /f /s /y "D:\Resource\" "D:\files" "%i" D:\Resource>xcopy /f /s /y "D:\Resource\" "D:\files\" "forfiles /s /d -7" Invalid number of parameters 0 File(s) copied Ошибка: "Invalid number of parameters" |
Отправлено: 18:15, 13-08-2018 | #9 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Sargezzz,
вот этот код: скорировать отсюда, вставить в открытый созданный прямо в корне диска C: (или D) файл txt, сохранить как: Name.bat и запустить стандартно ЛКМ. Естественно указав в переменных (2 и 3 строка) свои пути. |
Отправлено: 18:52, 13-08-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Переместить из одной папки в другую старые бэкапы | okamigo2010 | Скриптовые языки администрирования Windows | 1 | 08-11-2017 17:20 | |
Автоматическое копирование файлов из одной папки в другую. | another_user | Хочу все знать | 4 | 25-09-2015 12:50 | |
CMD/BAT - [решено] Копировать содержимое с одной папки в другую | Dodakaedr | Скриптовые языки администрирования Windows | 2 | 06-07-2014 21:13 | |
VBS/WSH/JS - [решено] Надо скопировать файлы из одной папки в другую, но только если их нет в третьей | rromms | Скриптовые языки администрирования Windows | 3 | 11-09-2011 21:42 | |
CMD/BAT - [решено] смена размера копируемых файлов из одной папки в другую | Вовка13 | Скриптовые языки администрирования Windows | 4 | 10-09-2011 22:07 |
|