Saya perlu mengekstrak nama file dan ekstensi dari misalnya my.file.xlsx. Saya tidak tahu nama file atau ekstensi dan mungkin ada lebih banyak titik di namanya, jadi saya perlu mencari string dari kanan dan ketika saya menemukan titik pertama (atau terakhir dari kiri), ekstrak bagian di sisi kanan dan bagian kiri dari titik itu.
Mungkin ada solusi yang lebih baik, tetapi saya tidak menemukan apa pun di sini atau di mana pun. Terima kasih
.net
powershell
powershell-2.0
culter
sumber
sumber
Jawaban:
Jika file keluar dari disk dan seperti yang dinyatakan orang lain, gunakan properti
BaseName
danExtension
:Jika Anda diberi nama file sebagai bagian dari string (katakanlah berasal dari file teks), saya akan menggunakan metode
GetFileNameWithoutExtension
danGetExtension
statis dari kelas System.IO.Path :sumber
[System.IO.Path] | Get-Member -Static
[System.IO.Path]::GetExtension
mengembalikan ekstensi termasuk titik (".") .sumber
Jika berasal dari file teks dan dan file nama anggapan dikelilingi oleh spasi putih ini adalah caranya:
Jika adalah file, Anda dapat menggunakan sesuatu seperti ini berdasarkan kebutuhan Anda:
sumber
sumber
Periksa properti BaseName dan Ekstensi dari objek FileInfo.
sumber
Gunakan Split-Path
sumber
Split(".")[-1]
membuatnya berfungsi dengan file dengan titik di namalakukan saja:
sumber
$file.Basename
Ini adalah adaptasi, jika ada yang penasaran. Saya perlu menguji apakah RoboCopy berhasil menyalin satu file ke beberapa server untuk integritasnya:
Bagus dan sederhana, dan ini menunjukkan direktori dan file di dalamnya. Jika Anda ingin menentukan satu nama file atau ekstensi, cukup ganti * dengan apa pun yang Anda inginkan.
sumber
Pada PowerShell 6.0,
Split-Path
memiliki-Extenstion
parameter. Artinya, Anda dapat melakukan:atau
Untuk
$path = "test.txt"
kedua versi akan kembali.txt
, termasuk tanda titik.sumber