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
}
}
}
Please also mark the comments that contributed to the solution of the article
Content-ID: 52939836221
Url: https://administrator.de/contentid/52939836221
Printed on: October 15, 2024 at 16:10 o'clock
2 Comments
Latest comment
$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