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

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

7907292512
Lösung 7907292512 02.09.2023 aktualisiert um 14:27:08 Uhr
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 02.09.2023 um 20:42:33 Uhr
Goto Top
Klasse! Das hat geklappt! Vielen Dank! face-smile