Dateisuche mit Powershell
Hallo,
ich habe eine CSV-Liste, die Dateinamen enthält, die vergeben werden sollen. Die CSV-Datei enthält eine Spalte namens "searchterm" sowie Dateinamen wie z. B.:
Ich möchte im besagten Ordner und in den Unterordnern prüfen, ob eine Datei mit dem in der CSV-Liste angegebenen Dateinamen existiert oder nicht. Die Ordner, in denen gesucht werden soll, sind in einem Array aufgelistet.
Wenn z. B. die Datei mit dem Namen "name1" gefunden wurde, soll der Fund bestätigt werden und mit der Suche nach der Datei mit dem Namen "name2" fortgesetzt werden, und so weiter. Sollte eine Datei nicht existieren, soll die Suche abgebrochen werden, mit dem Hinweis, dass der Dateiname frei ist.
Ich hoffe, ich habe das richtig ausgedrückt, was ich mit dem Skript erreichen möchte. Ich habe das mal versucht, aber das wollte nicht so richtig gelingen. Habt ihr einen Tipp für mich?
ich habe eine CSV-Liste, die Dateinamen enthält, die vergeben werden sollen. Die CSV-Datei enthält eine Spalte namens "searchterm" sowie Dateinamen wie z. B.:
searchterm
name1
name2
name3
...
Ich möchte im besagten Ordner und in den Unterordnern prüfen, ob eine Datei mit dem in der CSV-Liste angegebenen Dateinamen existiert oder nicht. Die Ordner, in denen gesucht werden soll, sind in einem Array aufgelistet.
Wenn z. B. die Datei mit dem Namen "name1" gefunden wurde, soll der Fund bestätigt werden und mit der Suche nach der Datei mit dem Namen "name2" fortgesetzt werden, und so weiter. Sollte eine Datei nicht existieren, soll die Suche abgebrochen werden, mit dem Hinweis, dass der Dateiname frei ist.
Ich hoffe, ich habe das richtig ausgedrückt, was ich mit dem Skript erreichen möchte. Ich habe das mal versucht, aber das wollte nicht so richtig gelingen. Habt ihr einen Tipp für mich?
$import = "Suchbegriffe.csv"
$searchbase = @(
"01_Januar",
"02_Februar",
"03_März",
"04_April",
"05_Mai",
"06_Juni",
"07_Juli",
"08_August",
"09_September",
"10_Oktober",
"11_November",
"12_Dezember"
)
Import-Csv $import |
ForEach-Object {
$search_term = $_.searchterm
Foreach ($search in $searchbase) {
$filecheck = Get-ChildItem -Path $search -Include "$search_term" -File -Recurse
if ($filecheck) {
Write-Host "$search_term found on $search" -ForegroundColor Green
} else {
Write-Host "$search_term not found on $search" -ForegroundColor Red
Write-Host "$search_term is the free name"
break
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52939836221
Url: https://administrator.de/contentid/52939836221
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
2 Kommentare
Neuester Kommentar
$searchbase = "01_Januar", "02_Februar","03_März","04_April","05_Mai","06_Juni","07_Juli", "08_August","09_September","10_Oktober","11_November","12_Dezember"
$terms = Import-CSV .\suchbegriffe.csv -delimiter ';'
$files = Get-Childitem $searchbase -file -recurse -name
$firstfree = $terms.searchterm | ?{$_ -notin $files} | select -first 1
if ($firstfree){
write-host "First free name: $firstfree"
}else{
write-host "All filenames are in use!"
}
Gruß sid