J'ai une série de chaînes qui sont des chemins complets vers des fichiers. Je voudrais enregistrer uniquement le nom de fichier, sans l'extension de fichier et le chemin principal. Donc à partir de ceci:
c:\temp\myfile.txt
à
myfile
Je ne suis pas en train d'itérer dans un répertoire, auquel cas quelque chose comme la basename
propriété de PowerShell pourrait être utilisé, mais je ne m'occupe que de chaînes.
file
powershell
directory
Larryq
la source
la source
Réponses:
Il existe une méthode .NET pratique pour cela:
la source
Beaucoup plus facile que je ne le pensais pour résoudre le problème de l'affichage du chemin complet, du répertoire, du nom de fichier ou de l'extension de fichier.
autres formes:
la source
$csr = Get-ChildItem -Path "$($domain.FullName)/*.csr"
alorsWrite-Host "fileName: $($csr.Basename)"
Inspiré d'une réponse de @ walid2mi:
Remarque: cela ne fonctionne que si le fichier donné existe vraiment .
la source
ou
ou
la source
vous pouvez utiliser la propriété basename
la source
@Keith ,
voici une autre option:
la source
Étant donné toute chaîne de chemin arbitraire, diverses méthodes statiques sur l'objet System.IO.Path donnent les résultats suivants.
Voici le code qui a généré la sortie ci-dessus.
L'écriture et le test du script qui a généré ce qui précède ont révélé certaines bizarreries sur la différence entre PowerShell et C #, C, C ++, le langage de script de commande Windows NT et à peu près tout le reste avec lequel j'ai une expérience.
la source
À partir de PowerShell 6, vous obtenez le nom de fichier sans extension comme ceci:
la source
Ce script recherche dans un dossier et des sous-dossiers et renomme les fichiers en supprimant leur extension
la source
En développant la réponse de René Nyffenegger, pour ceux qui n'ont pas accès à PowerShell version 6.x, nous utilisons Split Path, qui ne teste pas l'existence de fichiers:
Cela renvoie " myfile.txt ". Si nous savons que le nom du fichier ne contient pas de points, nous pouvons diviser la chaîne et prendre la première partie:
ou
Cela renvoie " myfile ". Si le nom du fichier peut inclure des points, pour être sûr, nous pourrions utiliser ce qui suit:
Cela renvoie " myfile.txt.config ". Ici, je préfère utiliser Substring () au lieu de Replace () car l'extension précédée d'un point pourrait également faire partie du nom, comme dans mon exemple. En utilisant Substring, nous renvoyons le nom de fichier sans l'extension comme demandé.
la source
En voici un sans parenthèses
la source
Cela peut être fait en divisant la chaîne plusieurs fois.
Voici le code sans commentaires:
la source