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