honeybee
Goto Top

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.:
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
			}
		}
	}

Content-ID: 52939836221

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

Printed on: October 15, 2024 at 16:10 o'clock

7907292512
Solution 7907292512 Sep 02, 2023 updated at 12:27:08 (UTC)
Goto Top
$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!"  
}
tio.run

Gruß sid
honeybee
honeybee Sep 02, 2023 at 18:42:33 (UTC)
Goto Top
Klasse! Das hat geklappt! Vielen Dank! face-smile