powershell powershell-v2.0

powershell - Extrae el nombre de archivo de una ruta



powershell-v2.0 (6)

$ (Split-Path "D: / Server / User / CUST / MEA / Data / In / Files / CORRECTED / CUST_MEAFile.csv" -leaf)

Quiero extraer el nombre de archivo de la ruta siguiente:

D:/Server/User/CUST/MEA/Data/In/Files/CORRECTED/CUST_MEAFile.csv

Ahora escribí este código para obtener el nombre del archivo. Esto funciona bien siempre que el nivel de la carpeta no haya cambiado. Pero en caso de que se haya cambiado el nivel de la carpeta, este código debe reescribirse. Busco una manera de hacerlo más flexible, ya que el código siempre puede extraer el nombre de archivo independientemente del nivel de la carpeta.

($outputFile).split(''/')[9].substring(0)


El uso de BaseName en Get-ChildItem muestra el nombre del archivo y usando Name muestra el nombre del archivo con la extensión.

$filepath = Get-ChildItem "E:/Test/Basic-English-Grammar-1.pdf" $filepath.BaseName Basic-English-Grammar-1 $filepath.Name Basic-English-Grammar-1.pdf


Podrías obtener el resultado que quieres así.

$file = "D:/Server/User/CUST/MEA/Data/In/Files/CORRECTED/CUST_MEAFile.csv" $a = $file.Split("/") $index = $a.count - 1 $a.GetValue($index)

Si usa "Get-ChildItem" para obtener el "nombre completo", también puede usar "nombre" para obtener el nombre del archivo.


Si está de acuerdo con incluir la extensión, debería hacer lo que quiera.

$outputPath = "D:/Server/User/CUST/MEA/Data/In/Files/CORRECTED/CUST_MEAFile.csv" $outputFile = Split-Path $outputPath -leaf


Use .NET:

[System.IO.Path]::GetFileName("c:/foo.txt") devuelve foo.txt . [System.IO.Path]::GetFileNameWithoutExtension("c:/foo.txt") devuelve foo


Get-ChildItem "D:/Server/User/CUST/MEA/Data/In/Files/CORRECTED/CUST_MEAFile.csv" |Select-Object -ExpandProperty Name