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

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

23.02.2019, 16:35. Показов 38057. Ответов 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
7002 / 2886 / 1110
Регистрация: 06.06.2017
Сообщений: 9,813
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
7002 / 2886 / 1110
Регистрация: 06.06.2017
Сообщений: 9,813
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
7002 / 2886 / 1110
Регистрация: 06.06.2017
Сообщений: 9,813
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
7002 / 2886 / 1110
Регистрация: 06.06.2017
Сообщений: 9,813
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
7002 / 2886 / 1110
Регистрация: 06.06.2017
Сообщений: 9,813
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
1887 / 1109 / 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
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru