PowerShell: Trouver exacte du nom du dossier
J'essaie de trouver un moyen pour retourner le chemin complet d'un dossier donné. Le problème est que mon code renvoie plus d'un dossier si il est similaire appelé dossier. par exemple, la recherche de "Program Files", renvoie "Program Files" et "Programmes Files (x86)". Comme je n'ai pas demandé "Program Files (x86), je ne veux pas qu'il revienne. Je suis à l'aide de:
$folderName = "Program Files"
(gci C:\ -Recurse | ?{$_.Name -match [regex]::Escape($folderName)}).FullName
J'ai pensé à remplacer un match avec -eq, mais il sera de retour $faux, car c'est en comparant le chemin d'accès complet.
J'ai pensé peut-être le retour de tous les matchs, puis en demandant à l'utilisateur de choisir laquelle est la bonne, ou la création d'un tableau qui divise le chemin vers le bas et faire un eq sur chaque nom de dossier, puis de rejoindre de nouveau le chemin, mais mes compétences font défaut dans le tableau de service et impossible de le faire fonctionner.
De l'aide ou des pointeurs seront reçues avec reconnaissance.
Grâce
Voici ce que j'ai utilisé avec la grâce de Frode:
$path = gci -Path "$drive\" -Filter $PartialPath -Recurse -ErrorAction SilentlyContinue #| ?{$_.PSPath -match [regex]::Escape($PartialPath)}
($path.FullName | gci -Filter $filename -Recurse -ErrorAction SilentlyContinue).FullName
OriginalL'auteur woter324 | 2014-03-02
Vous devez vous connecter pour publier un commentaire.
-match
, c'est comme demander pour*Program Files*
. Vous devriez être en utilisant la-Filter
paramètre deGet-ChildItem
pour quelque chose comme ça. C'est beaucoup plus rapide et ne nécessite pas de regex échapper etc.PowerShell 3:
PowerShell 2:
Aussi, vous ne devez pas utiliser
-Recurse
si vous n'en avez pas besoin(comme dans cet exemple).$path = dcg -Chemin "$\" - Filtre $PartialPath -Recurse -ErrorAction SilentlyContinue ($chemin.FullName | dcg -Filtre $filename -Recurse -ErrorAction SilentlyContinue).FullName.
OriginalL'auteur Frode F.