PDA

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


erorr
07-08-2013, 12:14
Всем доброго времени суток!
Помогите! Нужен скрипт который будет отбирать файлы из папки и подпапок за текущую дату(создание и изменение). и копировать в другую папку.
Спасибо!

Bruce Wayne
07-08-2013, 12:43
Если через forfiles (возможно, отсутствует в системе), то можно так:

forfiles /d 0 /p "Папка" /m * /s /c "cmd /c copy /y "@path\@file" "Другая папка""

amel27
07-08-2013, 12:49
для типовой локали DD.MM.YYYYxcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "Исходный путь\*" "Целевой путь\"

erorr
07-08-2013, 14:57
amel27 Спасибо!

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

amel27 спасибо.
Надо чтобы измененные и созданные перекидывал, и желательно все в одну кучу, без сохранения

sunnykey
07-08-2013, 15:51
amel27 Спасибо!
Надо, чтобы и измененные и созданные перекидывал, и желательно все в одну кучу, без сохранения пути в новой папки.
amel27 спасибо.
Надо чтобы измененные и созданные перекидывал, и желательно все в одну кучу, без сохранения »
Тогда так
#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
#перемеменная OlderThan отвечает за разницу дней от текущей даты
$OlderThan=New-TimeSpan -Days 1
$CurDay=Get-Date -Date ((Get-Date)-$OlderThan) -Hour 00 -Minute 00 -Second 00 -Millisecond 00
Get-ChildItem D:\Downloads\* -Recurse -Force | `
? {(($_.CreationTime -gt $CurDay) -or ($_.LastWriteTime -gt $CurDay))} | `
Copy-Item -Destination "c:\папка назначения" -Force

erorr
08-08-2013, 19:16
Желательно без Powershell

Foreigner
08-08-2013, 23:43
Надо чтобы измененные и созданные перекидывал, и желательно все в одну кучу, без сохранения
Желательно без Powershell

@echo off
setlocal

subst n: "C:\Path\To\Source Folder"
pushd n:

set "today=%date:~-4%%date:~3,2%%date:~0,2%"

for /f "usebackq tokens=2 delims==" %%i in (`wmic datafile where "drive='N:' and lastmodified>'%today%'" get name /value`) do (

copy /y "%%~i" "C:\Path\To\Destination Folder"

)

subst n: /d
popd

vsokol
27-10-2016, 09:51
для типовой локали DD.MM.YYYY
Код:
xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "Исходный путь\*" "Целевой путь\" »
мне нужен как раз такой батник что бы
как в шапке
Нужен скрипт который будет отбирать файлы из папки и подпапок за текущую дату(создание и изменение). и копировать в другую папку.
Спасибо!
создал батник
xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "E:\test\*" "E:\test2\"
при запуске сразу закрывается,а если с командной строки то пишет скопировано 0 файлов

megaloman
27-10-2016, 11:09
vsokol, для отладки сделайте
echo xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "E:\test\*" "E:\test2\"
pause Посмотрите, как отобразилась дата Должно быть
xcopy /s /y /d:10-27-2016 "E:\test\*" "E:\test2\"

Сделайте Dir "E:\test\*" - там есть файлы? И есть ли там файлы с датой за сегодняшний день?

vsokol
27-10-2016, 11:20
Посмотрите, как отобразилась дата
Сделайте Dir "E:\test\*" - там есть файлы? »
вот что вышло

C:\Users\sysadmin\Desktop>echo xcopy /s /y /d:10-27-2016 "E:\test\*" "E:\test2\"
xcopy /s /y /d:10-27-2016 "E:\test\*" "E:\test2\"

C:\Users\sysadmin\Desktop>pause
Для продолжения нажмите любую клавишу . . .
если ввести
Dir "E:\test\*"
то выходит
Microsoft Windows [Version 10.0.14393]
(c) Корпорация Майкрософт (Microsoft Corporation), 2016. Все права защищены.

C:\Users\sysadmin>Dir "E:\test\*"
Том в устройстве E не имеет метки.
Серийный номер тома: C64A-6ED9

Содержимое папки E:\test

27.10.2016 11:15 <DIR> .
27.10.2016 11:15 <DIR> ..
27.10.2016 11:15 <DIR> Runnerv3
0 файлов 0 байт
3 папок 96*145*170*432 байт свободно

C:\Users\sysadmin>

непонятно почему не работает

megaloman
27-10-2016, 11:23
Измените какой-нибудь файл, или создайте какой-нибудь файл хоть в текстовом редакторе, чтобы была гарантия наличия сегодняшнего файла. На Вашей распечатке видны только сегодняшние даты папок, а не файлов.

vsokol
27-10-2016, 11:49
Измените какой-нибудь файл, или создайте какой-нибудь файл хоть в текстовом редакторе, чтобы была гарантия наличия сегодняшнего файла. На Вашей распечатке видны только сегодняшние даты папок, а не файлов. »

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


http://forum.oszone.net/attachment.php?attachmentid=140774&stc=1&d=1477558139

заработало
нужно что бы было батнике был текст
echo
xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "E:\test\*" "E:\testk\"
pause

а не
echo xcopy /s /y /d:%DATE:~3,2%-%DATE:~,2%-%DATE:~6,4% "E:\test\*" "E:\testk\"
pause

mwz
27-10-2016, 14:31
"E:\test\*" "E:\test2\" »

Ох не нравятся мне кавычки в последнем операнде....

megaloman
27-10-2016, 16:09
vsokol, для отладки сделайте есно xcopy ... надо было проделать один раз для отладки, чтобы убедиться, что дата формируется правильно (было подозрение, что у Вас в системе формат даты не дд.мм.гггг). Теперь echo вовсе не нужно, как, впрочем, и pause. Надо было разобраться в ситуации - как оказалось, у Вас команда написана правильно, но Вы неверно интерпретировали результаты её выполнения: не было файлов для обработки.

mwz, а чем Вас угнетают кавычки? В конкретном случае они не обязательны, так как в пути нет пробелов, но это был тест, а какой реально будет путь - сие ни мне ни Вам не ведомо.

mwz
27-10-2016, 22:13
а чем Вас угнетают кавычки? »

Протестировал сейчас то, в чём сомневался. Прошло нормально, по крайней мере в Win-7.
Возражение снято.




© OSzone.net 2001-2012