13

Я разработал сценарий PowerShell, и он работает отлично. Единственная проблема заключается в том, что файлы в подпапках не перемещаются в пункт назначения.Сценарий PowerShell для перемещения файлов и папок, включая вложенные папки из одного места в другое старше x дней

get-childitem -Path "\\servername\location" | 
    where-object {$_.LastWriteTime -lt (get-date).AddDays(-31)} | 
    move-item -destination "C:\Dumps" 

Я не могу настроить сценарий дальше.

ответ

10

Используйте -Recurse опцию в команде Get-ChildItem достучаться до файлов в подпапки, а затем переместить каждый по отдельности, перенаправив коллекцию Move-Item

Get-ChildItem -Path "C:\Test" -Recurse | 
    Where-Object {$_.LastWriteTime -lt (Get-date).AddDays(-31)} | 
    Move-Item -destination "C:\Dumps" 

Вот скриншот:

screenshot

+0

Musaab. -Recursive, похоже, не работает. Можете ли вы помочь дальше? – user1926332

+0

Вы уверены, что файлы соответствуют предложению where-object? Я обновлю свой ответ на скриншот, чтобы проиллюстрировать, как я использую параметр -Recursive. Проверьте его и дайте мне знать, что я делаю. –

+0

Эй, большое спасибо Мусааб .... Я был фактически неуместным одного персонажа. – user1926332

12

Не теряйте время, пытаясь заново изобрести robocopy в PowerShell.

robocopy \\servername\location C:\Dumps /e /mov /minage:31 
+0

Этот скрипт копирует файлы в пункт назначения и только с основного дорожка. Я хотел бы также включить подпапки. Я хочу переместить их в другое место. – user1926332

+1

Используйте '/ s' для рекурсии во вложенные папки. Используйте '/ e' (вместо'/s') для включения пустых подпапок. Что вы подразумеваете под «другим местом»? Не хотите ли сохранить структуру папок? В этом случае вы можете использовать PowerShell (с опцией '-Recursive', как упоминалось в @Musaab). Однако этот подход поставит вас под угрозу потери данных из-за перезаписанных файлов. –

+0

Спасибо Ansgar .... ваш скрипт robocopy выполнил задание, которое я хотел, и многое другое я смог построить еще один скрипт для другого использования. – user1926332

6

Упрощение выше
robocopy A:\ B:\ /MIR /minage:31
Где A: \ Ваш источник B: \ Ваш адресат

0

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

Get-ChildItem "E:" -Recurse | Move-Item -Destination "G:"

 Смежные вопросы

  • Нет связанных вопросов^_^