Powershell remplacement des périodes
Quelqu'un peut me dire si ils pensent qu'il ya quelque chose de mal avec ce script Powershell.
Dir |
where {$_.extension -eq ".txt"} |
Rename-Item –NewName { $_.name –replace “.“,”-” }
Pour chaque fichier texte dans le répertoire courant, je suis en train de remplacer toutes les périodes dans les noms de fichiers avec des traits d'union. Merci à l'avance.
Vous devez vous connecter pour publier un commentaire.
Comme les autres l'ont dit,
-replace
utilise des regex (et le "." est un caractère spécial dans les regex). Cependant, leurs solutions sont en oubliant l'extension de fichier et ils sont acutally de l'enlever. ex. "test.txt" devient "test-txt" (pas d'extension). Une meilleure solution serait:Ce aussi utilise -Filtre pour sélectionner uniquement les fichiers se terminant par ".txt" qui est plus rapide que d'en comparant avec où les.
-remplacer opère sur les regex, vous devez vous échapper '.':
Sinon vous allez vous retrouver avec des " - - - - nom de...
La propriété name d'un objet de fichier dans powershell est de type string.
Ce qui signifie, vous pouvez également utiliser la chaîne statique méthode
replace
comme suit et ne se soucient pas de regex' les caractères réservés: