[Powershell] Bestanden selecteren op naam

Pagina: 1
Acties:

  • technoaddict
  • Registratie: Juni 2006
  • Laatst online: 13:45
Hey guys,

Ik ben al even aan het stoeien met een scriptje dat ik moet maken. Een bepaalde netwerkfolder heeft een hele reeks met bestanden. Om een voorbeeld te geven van de bestanden:

Bestand 1900
Bestand 1901
Bestand 1902

Nu wil ik graag een script dat bestanden verwijderd met het nummer lager of gelijk aan 1901. Tot zover heb ik helaas alleen iets als Get-Childitem | Where {$_.Name -match "1901"}
Deze regel laat alleen de naam "Bestand 1901" zien.
Een operator als -le ( Less then or equal to ) werkt in deze regel niet. Misschien wel als de bestanden alleen maar als naam het nummer zouden hebben, maar er staat nog wat tekst voor. Het script moet dus echt in de naam kijken. Iemand idee?

  • DR
  • Registratie: December 2000
  • Niet online

DR

code:
1
2
$a = get-children
$a | foreach { $b = [regex]::Replace($_.Name, "[A-z ]",''); if($b -lt 1905) { write-host "delete file $_.Name  "} }

Gaat nog wel fout als er uberhaupt geen nummer in de bestandsnaam zit, maar heb zo even niet meer tijd :P

  • technoaddict
  • Registratie: Juni 2006
  • Laatst online: 13:45
Thanks DR! Werkt als een charm.
Toch nog een vraagje, kan jij uitleggen wat "$b = [regex]::Replace($_.Name, "[A-z ]",' ' doet?

Als ik google op regex vind ik allemaal sites die uitleg geven over Regular Expressions.
Wat ik denk is dat het een match doet op de letters A t/m Z, en als het letters vindt, vervangt het de letters met niks, en zo blijven alleen de getallen over. Klopt dat? :$

  • DR
  • Registratie: December 2000
  • Niet online

DR

Klopt wat je zegt :)
Replaced alles tussen a&z (en spaties) met niks zodat je het getal overhoud :)