Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/195: Рейтинг темы: голосов - 195, средняя оценка - 4.97
 Аватар для Анатолий Т
0 / 0 / 0
Регистрация: 23.02.2019
Сообщений: 19

Перемещение файлов, созданных за предыдущую дату (xcopy)

23.02.2019, 16:35. Показов 37928. Ответов 32

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Прошу подсказать синтаксис команды xcopy. Нужно переместить файлы из папки D:\Folder1 в папку D:\Folder2. Причем переместить только файлы, созданные за предыдущую дату относительно даты выполнения команды. Например, сегодня 23-е число, значит перемещаем файлы созданные 22-го и т.д.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.02.2019, 16:35
Ответы с готовыми решениями:

Копирование файлов с помощью команды XCOPY
не могу сделать копирование файлов по дате, при копировании пишет Недопустимый ключ - "/c:12.05" echo off set s=y:\*.rar ...

Циклическое копирование файлов с использованием команды XCOPY
Здравствуйте. Я хочу скопировать определённые файлы из одной директории в другую. Имею такой bat-файл: REM @echo off SET...

Поиск в папке и подпапках файлов, созданных или измененных за определенную дату
Есть папка(D:\wscom). В ней лежат файлы, папки, подпапки. на форме текстовое поле(для ввода даты за которую необходимо осуществить...

32
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
23.02.2019, 20:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ZoOoO Посмотреть сообщение
Разве это сложно?
Для системы — да, сложно. Вместо нормальной фильтрации по дате создавать файл-список и сравнивать его строки в цикле — это тот ещё костыль.
Цитата Сообщение от ZoOoO Посмотреть сообщение
Ну значит у тебя какой то косяк.
Кроме удаления маски и замены %userprofile%\desktop\batch на %cd% ничего не менялось.
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
23.02.2019, 21:00
Раньше было все сложно.Я понимаю.Приходилось в ручную запихивать 0 и 1 в компьютер. Для этого придумали высокоуровневые языки и научили машину понимать эти языки. А то,что я написал выше,я про код.То там ничего сложного нет. Мне даже нравиться, придумываешь ,как выйти из ситуации. Главный минус PS- он отключен. Придумать типа охеренную вещь и отключить))Нет слов.
Зачем маску удалил. Он же не знает, что искать.

Добавлено через 13 минут
Попробуй так
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
Setlocal EnableDelayedExpansion
 
for /f "usebackq delims=" %%a in (`forfiles /D:-3 /p "%CD%" /m *.txt /c "cmd /c echo @file"`) do (
echo %%~a >>$.txt
)
 
for /f "usebackq delims=" %%b in (`forfiles /D:-2 /p "%CD%" /m *.txt  /c "cmd /c echo @file"`) do (
echo %%~b |findstr /v /g:$.txt
)
rem del $
pause
Добавлено через 3 минуты
Я пока из $ не сделал нормальный текстовый файл, работать это чудо не хотело.Можно и без маски.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
23.02.2019, 21:02
Цитата Сообщение от ZoOoO Посмотреть сообщение
Мне даже нравиться, придумываешь ,как выйти из ситуации.
Искать медленные костыли никто не запрещает. Вопрос только в целесообразоности их частого использования.
Цитата Сообщение от ZoOoO Посмотреть сообщение
Главный минус PS- он отключен. Придумать типа охеренную вещь и отключить))Нет слов.
Хватит сказки рассказывать. Всё включено, если кто-то "умный" (сборщик, например) не "постарался".
Цитата Сообщение от ZoOoO Посмотреть сообщение
Зачем маску удалил. Он же не знает, что искать.
См. мой первый пример в теме и читаем справку:
Маска поиска по умолчанию "*" .
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
23.02.2019, 21:06
Цитата Сообщение от FlasherX Посмотреть сообщение
Для системы — да, сложно.
Трудно сказать.Я не знаю по какому принципу PS вычитает дни из дат.Но за этой строкой в PS стоит другой код, который уже в свою очередь как то по своему работает.ЧТо то типа,если бы я создал батник в котором прописал бы свои названия команд ,а к командам присвоил бы свои алгоритмы основанные на СМД или PS. Потом зашифровал бы этот батник и втюхивал бы всем под видом новой командной строки.

Добавлено через 1 минуту
Цитата Сообщение от FlasherX Посмотреть сообщение
Всё включено
Он по умолчанию отключен.Включать можно под разными разрешениями.С ограниченными правами и с правами Бога.
0
 Аватар для Анатолий Т
0 / 0 / 0
Регистрация: 23.02.2019
Сообщений: 19
23.02.2019, 21:06  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Нет, до сегодняшнего. Вместо -1 нужно устанавливать вчерашнюю дату аля 22.2.2019. На cmd нет инструментария вычислений между датами. Тут нужны другие средства: vbs/js/ps1.
Не могли бы вы написать команду для удаления файлов из папки D:\Folder2, созданных "до вчерашнего дня" -2d. (Т.е., если сегодня 23 число, я скопировал в папку D:\Folder2 файлы, созданные 22, но там еще оказались файлы созданные 20, 21 - их просто удалю из конечной папки и все) Просто включу команду на удаление в свой bat файл второй строчкой. У меня файлов созданных ранее "вчерашнего дня" будет не много. Пока буду тупо копировать все и чистить лишнее.
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
23.02.2019, 21:09
Цитата Сообщение от FlasherX Посмотреть сообщение
Маска поиска по умолчанию "*" .
МОжно в обще убрать=)
0
 Аватар для Анатолий Т
0 / 0 / 0
Регистрация: 23.02.2019
Сообщений: 19
23.02.2019, 21:14  [ТС]
Цитата Сообщение от ZoOoO Посмотреть сообщение
Вот. Посмотри, работает?
Должен выводить только файлы созданные 21.02.19
Не могли бы вы привести такой же код под мою задачу с копированием файлов, а не просто выводом списка

Добавлено через 1 минуту
Power Shell, в принципе, мне тоже подойдет. Я наивно полагал, что в CMD будет проще, а тут вот оно что.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
23.02.2019, 22:54
Цитата Сообщение от Анатолий Т Посмотреть сообщение
Не могли бы вы написать команду для удаления файлов из папки D:\Folder2, созданных "до вчерашнего дня" -2d. (Т.е., если сегодня 23 число, я скопировал в папку D:\Folder2 файлы, созданные 22, но там еще оказались файлы созданные 20, 21 - их просто удалю из конечной папки и все
Серьёзно? ) Если нет проблем с удалением до, то какие могут быть проблемы с удалением после?
Впрочем, заменить -1 на -2 после /D, не должно быть проблемой.
Попробуйте такой vbs:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
'——————————————————————————————————————————
InPut  = "D:\Folder1\"
OutPut = "D:\Folder2\"
M = -1  ' число отнятых дней от даты файлов
'——————————————————————————————————————————
Set Con = CreateObject("ADODB.Connection")
Set Rec = CreateObject("ADODB.Recordset")
Con.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"
Rec.Open "SELECT System.FileName FROM SYSTEMINDEX Where System.ItemFolderPathDisplay='" &_
InPut & "' and System.DateCreated > " & Dt(M) & " And System.DateCreated < " & Dt(M+1), Con
Do Until Rec.EOF
   S = S & ";" & Rec.Fields.Item("System.FileName")
   Rec.MoveNext
Loop
Set Con = Nothing : Set Rec = Nothing
If Len(S) Then
   With CreateObject("Shell.Application")
      Set Items = .NameSpace(InPut).Items
      Items.Filter 73920, Mid(S, 2)
      .NameSpace(OutPut).MoveHere Items, 5652
   End With
End If
 
Function Dt(D)
   D = DateAdd("d", D, Date): Dt = "'" & Year(D) & "-" & Month(D) & "-" & Day(D) & "'"
End Function


Добавлено через 9 минут
Цитата Сообщение от ZoOoO Посмотреть сообщение
Он по умолчанию отключен.Включать можно под разными разрешениями.С ограниченными правами и с правами Бога.
Это не PowerShell (консоль) отключёна, а запуск ps-сценариев. Разберись в терминалогии.
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
24.02.2019, 05:31
Цитата Сообщение от Анатолий Т Посмотреть сообщение
Не могли бы вы написать команду для удаления файлов из папки D:\Folder2, созданных "до вчерашнего дня" -2d.
Удаление вам нужно как следствие некорректной результата? Вот ещё пример корректного:
PowerShell
1
gci -Recurse D:\Folder1 | ?{$_.lastwritetime.Date -eq (Get-Date).adddays(-1).Date} | move-item -Destination D:\Folder2
0
 Аватар для Анатолий Т
0 / 0 / 0
Регистрация: 23.02.2019
Сообщений: 19
24.02.2019, 07:36  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Удаление вам нужно как следствие некорректной результата? Вот ещё пример корректного
Именно так. Вы привели команду для перемещения.
forfiles /p D:\Folder1 /d -1 /c "cmd /q/c >nul move @path D:\Folder2"

Тут как я понимаю нужно заменить /d -1 на /d -2 и move на del . Ну и удалить папку 2. Так?

Можно ли встроить приведенную вами PowerShell команду отдельной строчкой в bat файл?
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
24.02.2019, 08:49
Лучший ответ Сообщение было отмечено Анатолий Т как решение

Решение

Цитата Сообщение от Анатолий Т Посмотреть сообщение
Так?
Угу. На del /q /f только.
Цитата Сообщение от Анатолий Т Посмотреть сообщение
Можно ли встроить приведенную вами PowerShell команду отдельной строчкой в bat файл?
Windows Batch file
1
powershell -noprofile -c "gci D:\Folder1 | ?{$_.CreationTime.Date -eq (Get-Date).adddays(-1).Date} | mi -Destination D:\Folder2"
1
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
25.02.2019, 13:58
Цитата Сообщение от FlasherX Посмотреть сообщение
PowerShell
1
((Get-Date).adddays(-1).ToString() -split "\s")[0]
Точно такой же результат, можно получить без -split "\s" и обращения к элементу массива:

PowerShell
1
((Get-Date).adddays(-1).ToString() -split "\s")[0]
Code
1
24.02.2019
PowerShell
1
(Get-Date).adddays(-1).ToShortDateString()
Code
1
24.02.2019
1
 Аватар для Анатолий Т
0 / 0 / 0
Регистрация: 23.02.2019
Сообщений: 19
25.02.2019, 17:11  [ТС]
Спасибо всем!
Вопрос решен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.02.2019, 17:11
Помогаю со студенческими работами здесь

Определить предыдущую дату
Нужно написать программу, которая считывает дату с клавиатуры в ЧЧ.ММ.ГГ. Определить предыдущую дату. Например, для даты 01.10.15 нужно...

Определить предыдущую дату
Вот сама задача: Даны 2 числа d-день и m-месяц Определить предыдущую дату... Я её сделал, но она работает не корректно. Принтует по...

Определить предыдущую дату
Дата некоторого дня характеризуется тремя натуральными числами: g (год), m (порядковый номер месяца) и n(число). По заданным g, n и m...

Как получить предыдущую дату?
Помогите решить проблему. С помощью класса CTime получаю тек. дату и все ОК. CTime currentTime = CTime::GetCurrentTime();Но как мне...

Вычисление суммы за предыдущую дату MS SQL
Здравствуйте! Помогите решить проблему. Не получается правильно составить запрос. Для того, чтобы получить количество товара на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru