Как сопоставить свойство файла со всем массивом в powershell - PullRequest
1 голос
/ 30 ноября 2011

У меня есть вопрос и проблема.

У меня есть список из 600 000 FLV-файлов, которые я хочу сохранить.
У меня есть папка с 5 миллионами FLV-файлов, и я хочу удалить 4,4 миллиона или около того, что мне не нужно.

Я часами играл с этой проблемой, но не могу найти ничего простого, учитывая, что массивы неизменны.

Я думал о том, чтобы сделать:
foreach файл в списке 6 миллионов папок, проверьте, совпадает ли свойство name с каким-либо элементом в массиве файлов, которые я хочу сохранить (используя import-csv) И если дата более 30 дней.

Часть даты проста, но я не уверен, как сравнить имя с массивом. Это действительно так просто, как просто ссылаться на весь массив? Я не уверен, что сделает PowerShell. Я буду продолжать пытаться сделать это, но я был бы признателен за любую помощь / вклад в том, как это сделать или лучшую альтернативу.

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

В PowerShell, если у вас есть файл с именами файлов, который нужно сохранить в C: \ MyPath \ MyFile.txt, и файлы в C: \ FLVLocation \, примерно так будет работать.

$keep = Get-Content C:\MyPath\MyFile.txt
Get-ChildItem C:\FLVLocation| 
    where{$keep -notcontains $_.Name -and $_.CreationTime -lt [DateTime]::Now.Date.AddDays(-30)}| 
    Remove-Item

Но, пожалуйста, сначала проверьте.

1 голос
/ 30 ноября 2011

Вы не можете вместо этого переместить все файлы, которые хотите сохранить.

Переберите все файлы в массиве и, если данные в порядке, переместите файл в папку «keep». Удалите остальные, а затем переместите файлы обратно из папки «keep».

Вероятно, хорошо сначала выполнить пробный прогон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...