PowerShell: obtener el nombre del archivo desde la ruta [4 formas]
PowerShell: obtener el nombre de archivo de la ruta especificada
La ubicación de un archivo en un sistema puede determinarse por su ruta. En PowerShell, hay varias formas de obtener el nombre del archivo a partir de la ruta. En primer lugar, es esencial comprender lo que hay en un camino antes de profundizar.
¿Qué hay en un camino?
Una ruta indica la ubicación de un elemento en un formato particular. Por ejemplo, la ruta de un archivo podría ser C:\folder\subfolder\fileName.txt . La ruta incluye las siguientes partes si la separas en diferentes secciones:
- C:\ es la unidad, el calificador o la ruta especificada. Un calificador comienza a la izquierda de la ruta y termina con un co#lon (
:). - \folder\subfolder\ representa la carpeta y sus subcarpetas o contenedores.
- fileName.txt es el nombre del archivo u hoja. La hoja es la última parte o elemento de un camino.
- .txt es la extensión de un archivo.
Usando el cmdlet Split-Path
Utilice el comando Split-Path con el parámetro -Leaf para obtener el nombre del archivo de la ruta en PowerShell.
Utilice el cmdlet de ruta dividida:
Split-Path C:\Intel\project\ConvertString.ps1 -Leaf
PRODUCCIÓN :
ConvertString.ps1En PowerShell, el cmdlet Split-Path devolvió la parte especificada de una ruta determinada. Como hemos visto en la sección anterior, los elementos de una ruta solo pueden ser la carpeta principal, la subcarpeta, el nombre del archivo o la extensión del archivo.
En el ejemplo anterior, el cmdlet Split-Path desglosa la ruta dada C:\Intel\project\ConvertString.ps1 en partes separadas. Usamos el parámetro -Leaf anterior para extraer el nombre del archivo con la extensión; Como podemos ver, ConvertString.ps1 es el nombre del archivo en la ruta proporcionada.
Tenga en cuenta que también podemos obtener nombres de archivos sin extensión usando el comando Split-Path con el parámetro -LeafBase.
Utilice Split-Path con -LeafBase:
Split-Path C:\Intel\project\ConvertString.ps1 -LeafBasePRODUCCIÓN :
ConvertStringComo podemos observar, el nombre del archivo ConvertString se devolvió sin la extensión ps1. Aquí, el parámetro -LeafBase se usó arriba para obtener el nombre del archivo sin extensión.
Nota: Solo PowerShell 6.0 o versiones posteriores admiten este argumento.
Usando el cmdlet Get-Item
Utilice el cmdlet Get-Item para obtener el nombre del archivo de la ruta en PowerShell. El cmdlet Get-item se utiliza para obtener el elemento en una ubicación específica.
Utilice el cmdlet Obtener elemento:
Get-Item C:\Intel\project\ConvertString.ps1
PRODUCCIÓN :
Directory: C:\Intel\project
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 12/30/2022 9:35 PM 109 ConvertString.ps1Aquí, utilizamos el cmdlet Get-Item para obtener el nombre del archivo de la ruta especificada; podemos ver el modo del archivo, la fecha/hora de la última actualización, la longitud y el nombre donde podemos encontrar el nombre del archivo buscando en la columna Name.
En nuestro caso, ConvertString.ps1 representaba el nombre de un archivo. Si solo desea obtener el nombre del archivo con su extensión, agregue .Name al final del comando anterior, como se muestra a continuación.
Utilice el cmdlet Get-Item con .Name:
(Get-Item C:\Intel\project\ConvertString.ps1).NamePRODUCCIÓN :
ConvertString.ps1Podemos ver arriba que ahora solo obtenemos el nombre del archivo con la extensión ConvertString.ps1 de la ruta proporcionada. Si no desea una extensión de archivo, intente esto:
Utilice el cmdlet Get-Item con .BaseName:
(Get-Item C:\Intel\project\ConvertString.ps1).BaseNamePRODUCCIÓN :
ConvertStringAhora solo se devuelve el nombre del archivo ConvertString. Tenga en cuenta que la propiedad .BaseName anterior se utiliza para obtener el nombre del archivo, excluyendo su extensión.
Usando el cmdlet Get-ChildItem
Utilice el cmdlet Get-ChildItem para obtener el nombre del archivo de la ruta indicada.
Utilice el cmdlet Get-ChildItem:
(Get-ChildItem C:\Intel\project\ConvertString.ps1).Name
(Get-ChildItem C:\Intel\project\ConvertString.ps1).BaseNamePRODUCCIÓN :
ConvertString.ps1
ConvertStringEl Get-ChildItem con la propiedad .Name devolvió nombres de archivos con extensiones, y la propiedad .BaseName devolvió nombres de archivos sin extensiones.
Usando el método GetFileName()
Utilice el método GetFileName() de la clase Path para obtener el nombre del archivo y la extensión de la ruta dada.
Utilice el método GetFileName:
[System.IO.Path]::GetFileName('C:\Intel\project\ConvertString.ps1')PRODUCCIÓN :
ConvertString.ps1El comando [System.IO.Path]::GetFileName('C:\Intel\project\ConvertString.ps1') recuperó el nombre del archivo de la ruta de archivo especificada C:\Intel\ project\ConvertString.ps1 usando el método GetFileName() de la clase System.IO.Path.
Aquí, el método GetFileName() devolvió el nombre del archivo y la extensión del archivo, pero no la ruta del directorio. Entonces, por ejemplo, si la ruta del archivo es C:\Intel\project\ConvertString.ps1, el nombre del archivo sería ConvertString.ps1.
Si desea recuperar el nombre del archivo sin la extensión del archivo, puede utilizar el método GetFileNameWithoutExtension() de la clase System.IO.Path. Por ejemplo:
Utilice el método GetFileNameWithoutExtension:
[System.IO.Path]::GetFileNameWithoutExtension('C:\Intel\project\ConvertString.ps1')PRODUCCIÓN :
ConvertStringObtener varios nombres de archivos
En PowerShell, podemos obtener varios nombres de archivos con o sin extensiones de la ruta indicada.
Con extensiones
Utilice el cmdlet Get-ChildItem para recuperar elementos de una o varias ubicaciones determinadas y canalice al método GetFileName() para obtener los nombres de archivos con extensión.
Obtenga varios nombres de archivos con extensiones:
Get-ChildItem -Path C:\Intel\project\ -Filter *.ps1 | ForEach-Object -Process {[System.IO.Path]::GetFileName($_)}PRODUCCIÓN :
ConvertString-toDate.ps1
FunctionsFile.ps1Usamos el cmdlet Get-ChildItem para extraer elementos de una o más ubicaciones especificadas y los canalizamos al método GetFileName() para obtener los nombres de archivos con extensión. Por ejemplo, Get-ChildItem se usó para obtener archivos de la ubicación determinada C:\Intel\project\.
El parámetro -Filter se usó para obtener los archivos con la extensión .s1 y envió la salida al siguiente comando usando la canalización (|). Luego, usamos ForEach-Object para iterar sobre cada archivo en el directorio dado.
A continuación, se utilizó el parámetro -Process con el método GetFileName() de la clase System.IO.Path para extraer los nombres de los archivos. con extensión. También podemos obtener varios archivos sin extensión del directorio dado. Veamos a continuación para entender cómo podemos hacer esto.
Sin extensión
Utilice el cmdlet Get-ChildItem para extraer elementos de una o más ubicaciones especificadas y canalice al método GetFileNameWithoutExtension() para obtener los nombres de archivos sin extensión.
Obtenga varios nombres de archivos sin extensión:
Get-ChildItem -Path C:\Intel\project\ -Filter *.ps1 | ForEach-Object -Process {[System.IO.Path]::GetFileNameWithoutExtension($_)} PRODUCCIÓN :
ConvertString-toDate
FunctionsFilePuede observar que dos archivos disponibles en C:\Intel\project\ se devuelven usando el comando anterior. Tenga en cuenta que el código anterior es el mismo que el de la sección anterior; solo hemos reemplazado el método GetFileName() con el método GetFileNameWithoutExtension() para obtener nombres de archivos sin sus extensiones.
Se trata de cómo obtener el nombre de archivo de la ruta en PowerShell.
