Quiero extraer el nombre de archivo de la ruta de abajo:
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. Estoy buscando una manera de hacerlo más flexible, ya que el código siempre puede extraer el nombre del archivo independientemente del nivel de la carpeta.
($outputFile).split('\')[9].substring(0)
powershell
powershell-2.0
usuario664481
fuente
fuente
Utilizar .red:
[System.IO.Path]::GetFileName("c:\foo.txt")
devuelvefoo.txt
.[System.IO.Path]::GetFileNameWithoutExtension("c:\foo.txt")
devolucionesfoo
fuente
El uso de BaseName en Get-ChildItem muestra el nombre del archivo y el uso de 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
fuente
Podría obtener el resultado que desea de esta manera.
$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 simplemente el nombre del archivo.
fuente
-1
si está adoptando el enfoque de matriz:$file.Split("\")[-1]
Get-ChildItem "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" |Select-Object -ExpandProperty Name
fuente
Solo para completar la respuesta anterior, use .Net.
En este código, la ruta se almacena en el
%1
argumento (que está escrito en el registro bajo comillas que se escapan :)\"%1\"
. Para recuperarlo, necesitamos el$arg
(arg incorporado). No olvide la cita$FilePath
.# Get the File path: $FilePath = $args Write-Host "FilePath: " $FilePath # Get the complete file name: $file_name_complete = [System.IO.Path]::GetFileName("$FilePath") Write-Host "fileNameFull :" $file_name_complete # Get File Name Without Extension: $fileNameOnly = [System.IO.Path]::GetFileNameWithoutExtension("$FilePath") Write-Host "fileNameOnly :" $fileNameOnly # Get the Extension: $fileExtensionOnly = [System.IO.Path]::GetExtension("$FilePath") Write-Host "fileExtensionOnly :" $fileExtensionOnly
fuente
$(Split-Path "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" -leaf)
fuente
Puedes probar esto:
[System.IO.FileInfo]$path = "D:\Server\User\CUST\MEA\Data\In\Files\CORRECTED\CUST_MEAFile.csv" # Returns name and extension $path.Name # Returns just name $path.BaseName
fuente
Busque un archivo usando comodines y obteniendo el nombre del archivo:
Resolve-Path "Package.1.0.191.*.zip" | Split-Path -leaf
fuente
$file = Get-Item -Path "c:/foo/foobar.txt" $file.Name
Funciona con rutas relativas y absolutas
fuente