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

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

Ответить
Настройки темы
CMD/BAT - Копировать файлы из одной папки в другую с помощью XCOPY

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


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

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


Здравствуйте,

использую команду 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
Благодарности: 564

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


Код: Выделить весь код
forfiles /?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 13-08-2018 | #2



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

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


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


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

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


alpap, а каким образом можно в командной строке высчитать дату по формуле: ТекДата - 7 дней ?
заранее спасибо

Отправлено: 15:12, 13-08-2018 | #3


Ветеран


Contributor


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

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


Цитата Sargezzz:
а каким образом можно в командной строке высчитать дату по формуле: ТекДата - 7 дней »
Цитата Екклесиаст:
и что делалось, то и будет делаться, и нет ничего нового под солнцем.
Вот код
Код: Выделить весь код
@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


Ветеран


Contributor


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

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

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


Цитата Sargezzz:
высчитать дату по формуле: ТекДата - 7 дней ? »
для чего ее высчитывать?
Код: Выделить весь код
@echo off
cd /d "C:\papka"
for /f "delims=" %%i in ('forfiles /s /d -7') do del /f /s /q "%%i"
pause
без forfiles
Код: Выделить весь код
@echo off
set "d=C:\papka"
for /f "delims=" %%a in ('2^>nul dir /a-d/b/o-d "%d%"^|more +7') do del /q "%d%\%%~a"
pause
для копирования del с ключами поменять на copy

Отправлено: 16:17, 13-08-2018 | #6


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


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

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

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


Цитата Sargezzz:
в чем моя ошибка? »
В отсутствии кавычек, обрамляющих команду. Поскольку кавычек нет, цикл разбора по for /f пытается найти файл.

Либо:
Код: Выделить весь код
for /f "delims=" %%i in ('forfiles /s /d -7') do xcopy /f /s /y "D:\Resource\" "D:\files\" "%%i"
либо:
Код: Выделить весь код
for /f "usebackq delims=" %%i in (`forfiles /s /d -7`) do xcopy /f /s /y "D:\Resource\" "D:\files\" "%%i"
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:02, 13-08-2018 | #8


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


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

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

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


Sargezzz,
вот этот код:
Код: Выделить весь код
@echo off
set "d1=C:\papkaIN"
set "d2=C:\papkaOUT"

pushd "%d1%"
 for /f "delims=" %%i in ('forfiles /s /d -7') do copy "%%i" "%d2%"
popd
pause
скорировать отсюда, вставить в открытый созданный прямо в корне диска C: (или D) файл txt, сохранить как: Name.bat и запустить стандартно ЛКМ. Естественно указав в переменных (2 и 3 строка) свои пути.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:52, 13-08-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход