Saya memiliki serangkaian string yang merupakan jalur lengkap ke file. Saya hanya ingin menyimpan nama file, tanpa ekstensi file dan jalur utama. Jadi dari ini:
c:\temp\myfile.txt
untuk
myfile
Saya sebenarnya tidak melakukan iterasi melalui direktori, dalam hal ini sesuatu seperti basename
properti PowerShell dapat digunakan, tetapi saya berurusan dengan string saja.
file
powershell
directory
larryq
sumber
sumber
Jawaban:
Ada metode .NET yang berguna untuk itu:
sumber
Jauh lebih mudah daripada yang saya pikirkan untuk mengatasi masalah menampilkan jalur lengkap, direktori, nama file, atau ekstensi file.
bentuk lain:
sumber
$csr = Get-ChildItem -Path "$($domain.FullName)/*.csr"
kemudianWrite-Host "fileName: $($csr.Basename)"
Terinspirasi oleh jawaban @ walid2mi:
Harap diperhatikan: ini hanya berfungsi jika file yang diberikan benar-benar ada .
sumber
atau
atau
sumber
Anda dapat menggunakan basename properti
sumber
@ Keith ,
di sini opsi lain:
sumber
Diberikan sembarang string jalur, berbagai metode statis pada objek System.IO.Path memberikan hasil berikut.
Berikut adalah kode yang menghasilkan keluaran di atas.
Menulis dan menguji skrip yang menghasilkan di atas mengungkap beberapa keanehan tentang bagaimana PowerShell berbeda dari C #, C, C ++, bahasa skrip perintah Windows NT, dan hampir semua hal lain yang saya alami.
sumber
Dimulai dengan PowerShell 6, Anda mendapatkan nama file tanpa ekstensi seperti:
sumber
Skrip ini mencari di folder dan sub folder dan mengganti nama file dengan menghapus ekstensinya
sumber
Memperluas jawaban René Nyffenegger, bagi mereka yang tidak memiliki akses ke PowerShell versi 6.x, kami menggunakan Jalur Terpisah, yang tidak menguji keberadaan file:
Ini mengembalikan " myfile.txt ". Jika kita tahu bahwa nama file tidak memiliki titik di dalamnya, kita dapat membagi string dan mengambil bagian pertama:
atau
Ini mengembalikan " myfile ". Jika nama file mungkin menyertakan titik, untuk amannya, kita bisa menggunakan yang berikut:
Ini mengembalikan " myfile.txt.config ". Di sini saya lebih suka menggunakan Substring () daripada Replace () karena ekstensi yang didahului oleh titik juga bisa menjadi bagian dari nama, seperti dalam contoh saya. Dengan menggunakan Substring kami mengembalikan nama file tanpa ekstensi seperti yang diminta.
sumber
Ini satu tanpa tanda kurung
sumber
Ini dapat dilakukan dengan memisahkan string beberapa kali.
Berikut kode tanpa komentar:
sumber