Bitte beachten Sie den folgenden Code ein:Powershell - Extrahieren der Metadaten von Dateien und Netz sehen es
# import .NET 4.5 compression utilities
Add-Type -As System.IO.Compression.FileSystem;
$zipArchives = Get-ChildItem "*.zip";
foreach($zipArchive in $zipArchives)
{
$archivePath = $zipArchive.FullName;
$archive = [System.IO.Compression.ZipFile]::OpenRead($archivePath);
try
{
foreach($archiveEntry in $archive.Entries)
{
if($archiveEntry.FullName -notmatch '/$')
{
$tempFile = [System.IO.Path]::GetTempFileName();
try
{
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($archiveEntry, $tempFile, $true);
$windowsStyleArchiveEntryName = $archiveEntry.FullName.Replace('/', '\');
Select-String -pattern "<dc:title>.*</dc:title>" -path (Get-ChildItem $tempFile) | Select-Object @{Name="Path";Expression={Join-Path $archivePath (Split-Path $windowsStyleArchiveEntryName -Parent)}}
#Select-String -pattern "<dc:title>.*</dc:title>" -path (Get-ChildItem $tempFile) | Select-Object Matches
#Select-String -pattern "<dc:subject>.*</dc:subject>" -path (Get-ChildItem $tempFile) | Select-Object Matches
#Select-String -pattern "<dc:date>.*</dc:date>" -path (Get-ChildItem $tempFile) | Select-Object Matches
}
finally
{
Remove-Item $tempFile;
}
}
}
}
finally
{
$archive.Dispose();
}
}
Es ist eine modifizierte Version des Codes, die ich im Internet gefunden und hat mir geholfen, Strings in ZIP-Dateien zu finden.
Meine Absicht ist jetzt, Metadaten aus Zip-Dateien mit diesem Code zu extrahieren.
Ich verstehe nicht, wie ich die beiden Arten von Informationen in separaten Zeilen anzeigen kann. Wenn Sie das Skript mit nur einer Select-String...
Pipeline-Zeile ausführen, funktioniert der Code wie erwartet. Wenn Sie die zweite Pipelinezeile Select-String...
aktivieren (auskommentieren), wird der zweite Informationstyp (der <dc:title>
-Wert) nicht angezeigt und stattdessen ist eine leere Zeile.
Bitte helfen Sie mir:
1) Wie kann ich auch den Select-String | Select-Object
Mechanismus dc:title
Wert anzuzeigen, die ich im Code verwendet.
2) Wie kann ich Ausgang alle Daten in einem Tabellenformat, so dass die Tabelle wie folgt aussehen würde:
* ZIP Filename * DC Title *
* zipfile01.zip * Bla Bla 01 *
* zipfile02.zip * Bla Bla 02 *
* zipfile03.zip * Bla Bla 03 *
Dieses Format der Ausgabe am meisten verwendbar für mich sein würde.
Danke, Anthony , aber diese Methode würde mein Problem nicht lösen. Ihre Antwort hat mich dazu gebracht zu verstehen, dass ich meine Frage aktualisieren muss. Der 1. "Select-String" mit "" wird eigentlich als eine Art eindeutiger Schlüssel für mich verwendet, weil ich weiß, dass alle Dateien dieses Tag in ihren Metadaten haben. Ich möchte den Dateinamen und die tatsächliche "" nicht an der gleichen Ausgangsleitung angeben. Der fertige Code würde viel mehr dc-Tags enthalten ("", "" usw.), und jedes Tag benötigt eine eigene Zeile. –
kurkum