Рейтинг:0

Нужна помощь в перемещении файлов в каталог резервного копирования, за исключением последних 10 файлов на основе ИМЯ файла, не измененного по дате.

флаг gb


У меня возникла ситуация, когда сервер создает файлы журнала (MJ00001-MJ000x), и я хочу переместить все файлы в каталог резервного копирования, но мне нужно сохранить там последние 10 файлов, чтобы получить архив. Я посмотрел на robocopy и Powershell Move-Item, но проблема в том, что дата изменения всегда является текущим днем, поскольку сервер смотрит на них, если они находятся в каталоге (следовательно, я не могу использовать перемещение, сохраняя последние 10 на основе даты изменения). Я бы предпочел метод powershell, который может просматривать имя файла и перемещать все, кроме 10 файлов с наибольшим номером, поскольку я могу поместить это в скрипт, чтобы остановить службу сервера, а затем перезапустить после перемещения.

Пример структуры файла ниже:
Находится в папке C:\Folder.
основной файл.ext
MJ00001.ext
MJ00002.ext
MJ00003.ext
через MJ00257.ext

В этом примере я хочу переместить MJ0001.ext - MJ00247.ext в D:\Other_Folder\

Обратите внимание, что я хочу сохранить mainfile.ext в каталоге и только файлы MJ с самыми высокими именами.

Кто-нибудь может помочь?

Рейтинг:0
флаг in

Это на самом деле довольно просто, используя -ПропуститьПоследнее аргумент Select-Object:

Get-ChildItem -Path "C:\Folder" -Exclude "mainfile.ext" | Сортировать-Объект |
    Select-Object -SkipLast 10 |Move-Item -Destination "D:\Other_Folder\"
флаг gb
Я попробую сейчас и проголосую, если все работает. Спасибо.
флаг gb
Кажется, он не исключает файл mainfile.ext и также перемещает его в каталог назначения.
флаг in
Значит у вас где-то опечатка. Я проверил это перед публикацией.
флаг gb
Вот что я пробовал `Get-Item "C:\temp\Source" | Get-ChildItem -Exclude "mainfile.txt" | Сортировать-Объект | Select-Object -SkipLast 10 |Move-Item -Destination "C:\temp\Destination\" ` Когда я делаю каталог c:\temp\source, у меня есть MJ000012.txt-MJ00021 (последние 10 файлов), но исходный mainfile.txt также перемещается.
флаг gb
это как исключить не работает. когда я набираю команду раздел за разделом и говорю `Get-Item "C:\temp\Source" | Get-ChildItem` я получаю все файлы в папке. затем, когда я добавляю -Exclude "mainfile.txt", он по-прежнему показывает тот же вывод (я ожидаю, что mainfile.txt не будет отображаться в выводе)
флаг in
Забавно, теперь я получаю тот же результат, что и вы. Я мог бы поклясться, что это произошло не вчера. Тем не менее, пожалуйста, попробуйте мою модификацию. Это определенно работает для меня.
флаг gb
мы пришли к одному и тому же выводу одновременно. Get-Childitem -Path исправила это для меня ... `Get-ChildItem -Path C:\temp\source -Exclude "mainfile.txt" | Сортировать-Объект | Select-Object -SkipLast 10 |Move-Item -Destination C:\temp\Destination`

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.