pat.bat
Goto Top

PowerShell - Ordner auslesen und als Textdatei ausgeben

Hallo zusammen,

ich wollte gerade ein kleines Skript schreiben, das einen Ordner ausliest und den Namen der Dateien in eine Textdatei schreibt. Dabei sollen nur pdf Dateien genommen werden.

Zusätzlich möchte ich noch als erste Zeile eine kurze Info schreiben, wie viele Dateien im Ordner sind, wozu ich aber noch nicht gekommen bin.

Anbei mal das bereits stehende Skript:

# Skript zum auslesen des Bescheiddruckordners
# Speichert eine Textdatei vom aktuellen Tag in ein Verzeichnis

$TodayY = Get-Date -Format "yyyy"  
$TodayYM = Get-Date -Format "yyyy-MM"  
$TodayYMD = Get-Date -Format "yyyy-MM-dd"  
[String]$ArchivFolder = "\\vdm-11.sis.net\LUP-DATEN\FD_50_Bank\System_Ablaufverfahren\Druckerstraße\$TodayY\$TodayYM\$TodayYMD" # Archivordner auf "G"  
[String]$PrintFolder = "\\vdm-2.sis.net\KONZERN\LUP\50_Bescheiddruck" # Bescheiddruckordner auf "K"  
$NumberFiles = Get-ChildItem -File | Measure-Object | %{$_.Count} # TODO

# Prüfen ob Archivordner vorhanden ist, ansonsten erstellen.
If (!(Test-Path $ArchivFolder))
{
    mkdir $ArchivFolder
}

# Inhalt des Bescheiddruckordners auslesen und in Textdatei schreiben.
Get-ChildItem -Path $PrintFolder | Select Name, CreationTime | Where { $_.Extension -eq ".pdf" }  | Format-Table -AutoSize | `  
Set-Content "$ArchivFolder\Druckliste.txt"  

Er erstellt mir zwar die Archivordner, aber nicht die Textdatei. Woran liegt das bzw. wo hat sich der Fehler eingeschlichen?


Vielen Dank im Voraus

Content-ID: 504679

Url: https://administrator.de/contentid/504679

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

MrT0astbr0t
MrT0astbr0t 14.10.2019 aktualisiert um 14:38:06 Uhr
Goto Top
Da ist in meinen Augen einer der Fehler:
"Set-Content "$ArchivFolder\Druckliste.txt"

Mit Set-Content überschreibst du den Inhalt einer existierenden Datei. In deinem Script erstellst du derzeit jedoch die Datei nicht, also weiß er nicht wohin er schreiben soll.
Ganz davon ab: Er weiß gar nicht was er schreiben soll.

"Get-ChildItem -Path $PrintFolder | Select Name, CreationTime | Where { $_.Extension -eq ".pdf" } | Format-Table -AutoSize | `"
Das gibts du einfach nur in der Kommandozeile aus.

Der letzte Abschnitt müsste meiner Meinung nach so aussehen:
# Inhalt des Bescheiddruckordners auslesen und in Textdatei schreiben.
$content = Get-ChildItem -Path $PrintFolder | Select Name, CreationTime | Where { $_.Extension -eq ".pdf" }  | Format-Table -AutoSize | `  
$content | Out-File $ArchivFolder\Druckliste.txt

Oder noch kürzer (ohne es getestet zu haben, sollte aber auch funktionieren):
# Inhalt des Bescheiddruckordners auslesen und in Textdatei schreiben.
Get-ChildItem -Path $PrintFolder | Select Name, CreationTime | Where { $_.Extension -eq ".pdf" }  | Format-Table -AutoSize | ` | Out-File $ArchivFolder\Druckliste.txt  
Pat.bat
Pat.bat 14.10.2019 um 15:07:32 Uhr
Goto Top
Ich habe es jetzt mal wie folgt abgeändert:

# Inhalt des Bescheiddruckordners auslesen und in Textdatei schreiben.
$Content = "Anzahl Dokumente: $NumberFiles `t`t"  
$Content += Get-ChildItem -Path $PrintFolder | Select Name, CreationTime | Where { $_.Extension -eq ".pdf" }  | Format-Table -AutoSize  


$Content | Out-File "$ArchivFolder\Druckliste.txt"  

Damit erstellt er mir eine Text Datei.

Bei Anzahl Dokumente zählt er nun nicht nur Dokumente sondern auch Unterverzeichnisse, obwohl nur -File bei GC angegeben wurde.
Auch zieht er sich nicht die Dateien im Verzeichnis. Testweise ist eine pdf Datei dort abgelegt, aber er schreibt nicht den Namen der Datei in die Textdatei :S
141320
141320 14.10.2019 aktualisiert um 15:16:58 Uhr
Goto Top
Man kann sich ja echt einen abbrechen face-big-smile...
$items = Get-ChildItem -Path $Printfolder -File -Filter *.pdf
"Anzahl an Dateien: $($items.Count)",($items | Select Name, CreationTime | Format-Table -AutoSize ) | out-file "$ArchivFolder\Druckliste.txt"  
Fertsch!