@ivanfrolp

Можно ли организовать следующий функционал лишь силами командной строки или powershell?

Есть папка. Там каждый день создаются 5-6 файлов. Заранее, сколько именно файлов там создадутся, узнать нельзя, но обычно 5 или 6. Можеть быть такое что они создаются не каждый день, например может быть так что 1 июня создались, 2ого и 3его нет, 4ого снова создались.
Мне нужно скопировать эти файлы, и скопировать только те у которых дата создания самая близкая к сегодняшнему дню.
Вот реальный пример
5cf672ee33bde222271470.png

Если четко описать что я хочу:
1 Отсортировать файлы по дате создания (или изменения)
2 Взять файлы, у которых дата создания самая близкая к сегодняшней дате
3 Скопировать эти файлы в другую папку
  • Вопрос задан
  • 748 просмотров
Решения вопроса 3
Ezhyg
@Ezhyg
Ответ написан
Комментировать
@BeatHazard
Для решения подобных задач рекомендую использовать Powershell
Вы можете воспользоваться скриптом приведенным ниже. В скрипте необходимо заменить пути в переменных $Folder на путь где лежат файлы которые требуется копировать и $NewFolder путь к папке куда требуется копировать.
Краткое описание скрипта он берет все файлы в указанной папке, сортирует по дате создания, берет все файлы у которых дата создания самая последняя и совпадает день создания и копирует в указанную папку.

$Folder = "C:\temp\" #В какой папке проверяем файлы по дате
$NewFolder = "c:\temp11" # В какую папку копируем отобранные файлы
$Files = Get-ChildItem -path $Folder -file | Select-Object Name, CreationTime | Sort-Object CreationTime -Descending
$Date = $Files.CreationTime[0] | Get-Date -Format dd.MM.yy
Foreach ($File in $Files)
{$TempDate = $File.CreationTime | Get-date -Format dd.MM.yy
$FileName = $File.name
If ($TempDate -eq $Date)
{Copy-Item -path "$Folder$FileName" -Destination "$NewFolder"}}
Ответ написан
Комментировать
@Karpion
Вы бы операционку указали.

А так - есть отличная Unix-команда "find", портированная и в Windows. Может искать по дате создания/изменения файла. Полученный список файлов может скормить скрипту; или через опцию exec непосредственно команде.
Гуглить "man find".
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы