Windows Powershell Dateinamen auslesen und als variable verwenden?

1 Antwort

Powershel ist sooo bequem zu handhaben, wer will da noch für solchen Pippifax mit if rumfrickeln?

Der ganz Billige:

$var=gci *1*.* , *2*.* , *3*.* , *4*.* , *5*.* #suche im Ordner Dateien mit 1..5 im Namen
  #die Variable  mal anzegen
write-host -f green gefundene Dateien:   
($var).name
'';write-host -f yellow gefundene Dateien ,nur Name: 
($var).Basename 
'';write-host -f red gefundene Dateien ,voller Pfad: 
($var).Fullname 


  #mit der variable  was machen
$var|%{write-host -f magenta ich mache  was mit: -NoNewline ; write-host -f 15 $_.Name }

mit regex lässt es sich viel gezielter arbeiten:

  #RegEX 
$Pattern='.*[1-5].*'     #dies bedeutet: beliebig oft oder nicht jedes beliebige Zeichnen, eine Ziffer 1-5 , beliebig oft oder nicht jedes beliebige Zeichnen. (zb. blub5bla oder 2015mick etc
  # hole Dateinamen | wenn Name(ohne Endung) mit dem durch das RegeEX vorgegebene Muster übereistimmt | mache für jedes gefilterte Ergebnis  was  Dir beliebt
gci -af | ?{$_.BaseName -match $Pattern } | % {
    write-host -n -f magenta 'ich mache  was mir beliebt mit: ' ;
    write-host -f 15 $_.Name ;
}

...Und im Prinzip genau das Vorgegebene

alle Dateien , die die Zahlen 1-5 im Dateinamen haben.

ansonsten musst Du dich präziser ausdrücken. (ggf ein paar Beispiele).

Eine kurze Anleitung inclusive Tester .

Ich könnte da einen guten Regexgenerator empfehlen 🤣🤣🤣:

Bild zum Beitrag

die Alternative wäre eine if -Rödelei ohne gleichen:

$var= gci -af ;
foreach($file in $var) {
  for ($i=1; $i -le 5; $i++) {
    if ($file.BaseName -like "*$i*") {
        ...ich  habe es Aufgeben  etwas sinnvolles daraus zu machen...
        ..Mülltonne.. sowas tut man nicht mit Powershell
    }
  }
}

Glossar:

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
 - (Computer, Technik, Windows)