Простой скрипт PowerShell для получения PATHS от CSV, подтверждения их существования и написания другого CSV с истинными результатами - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в этом, и я также начинаю с PowerShell, и после нескольких попыток мне нужна ваша помощь.Проще говоря.

Я пытаюсь импортировать .csv со списком файлов / путей, а затем подтвердить, что эти маршруты существуют на жестком диске.Затем, когда я получаю результат, мне нужно экспортировать результаты найденных путей обратно в .csv У меня есть этот CSV в c: \ temp \ original.csv с этими данными:

Path
C:\temp\1.txt
C:\temp\2.txt
C:\temp\3.txt
C:\temp\4.txt
C:\temp\5.txt
C:\temp\6.txt

У меня есть этифайлы 1.txt и 3.txt и 5.txt.Я создал этот код, но все результаты возвращают «False».:

$data=import-csv "c:\temp\original.csv"
foreach ($path in $data) {
test-Path -path $path | Write-Host }

Когда я использую следующий код, появляются пути к файлам, поэтому я думаю, что он хорошо сохраняет данные CSV:

$data=import-csv "c:\temp\original.csv"
foreach ($path in $data) {
Write-Host test-Path -path $path }

Я делаю это, и если он показывает файл как истинный:

Test-Path -Path C:\temp\1.txt

Не могли бы вы помочь мне завершить сценарий, чтобы получить правильные данные и чтобы фактические результаты экспортировали их в CSV?

Как заставить "истинные" результаты экспортировать их в .CSV и удалить файлы в их расположении?У меня есть список из 30000 файлов, которые мне нужно проверить, которые были удалены другим процессом, но я хочу сохранить список тех, которые все еще существуют и которые будут удалены без возможности восстановления.Большое спасибо, правда.

Я действительно ценю это.Заранее спасибо.

Приветствие.

1 Ответ

0 голосов
/ 05 июня 2018

Вот исходные данные, с которых я начал.Спасибо за редактирование вопроса.

PS C:\src\t> type .\original.csv
Path
C:\temp\1.txt
C:\temp\2.txt
C:\temp\3.txt
C:\temp\4.txt
C:\temp\5.txt
C:\temp\6.txt

Код импортирует файл .csv, затем создает объект с полем path и выражением, указывающим, существует ли файл.

Import-Csv -Path '.\original.csv' |
    Select-Object -Property path, @{Name="exists";Expression={Test-Path -Path $_.path}} |
    Export-Csv -Path '.\original2.csv' -NoTypeInformation

Это привело к следующему выводу.

PS C:\src\t> type .\original2.csv
"path","exists"
"C:\temp\1.txt","True"
"C:\temp\2.txt","True"
"C:\temp\3.txt","True"
"C:\temp\4.txt","False"
"C:\temp\5.txt","True"
"C:\temp\6.txt","True"

Редактировать:

Этот код удалит существующий файл и поместит имя в вывод .csvжурнальный файл.Если вы уверены, что правильные файлы будут удалены, удалите -WhatIf из командлета Remove-Item.

Import-Csv -Path '.\original.csv' |
    Where-Object { Test-Path $_.Path } |
    ForEach-Object {
        Remove-Item -Path $_.Path -WhatIf
        $_
    } |
    Export-Csv -Path '.\original2.csv' -NoTypeInformation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...