PowerShell - Dosya Adını Yoldan Al [4 Yol]


PowerShell - Belirtilen Yoldan Dosya Adını Al

Bir dosyanın sistemdeki konumu, yoluna göre belirlenebilir. PowerShell'de dosya adını yoldan almanın birkaç yolu vardır. Öncelikle derinliğe inmeden önce yolun üzerinde ne olduğunu anlamak önemlidir.

Bir Yolda Ne Vardır?

Yol, bir öğenin konumunu belirli bir biçimde gösterir. Örneğin, bir dosyanın yolu C:\folder\subfolder\fileName.txt olabilir. Yol, farklı bölümlere ayırırsanız aşağıdaki bölümleri içerir:

  • C:\ sürücü, niteleyici veya belirtilen yoldur. Niteleyici yolun solunda başlar ve bir co#lon (:) ile biter.
  • \folder\subfolder\, klasörü ve onun alt klasörlerini veya kapsayıcılarını temsil eder.
  • fileName.txt, dosyanın veya yaprağın adıdır. Yaprak bir yolun son kısmı veya öğesidir.
  • .txt bir dosyanın uzantısıdır.

Split-Path Cmdlet'ini kullanma

Dosya adını PowerShell'deki yoldan almak için Split-Path komutunu -Leaf parametresiyle birlikte kullanın.

Bölünmüş Yol Cmdlet'ini kullanın:

Split-Path C:\Intel\project\ConvertString.ps1 -Leaf

ÇIKTI:

ConvertString.ps1

PowerShell'de Bölünmüş Yol cmdlet'i belirli bir yolun belirtilen kısmını döndürdü. Önceki bölümde gördüğümüz gibi, bir yolun öğeleri yalnızca ana klasör, alt klasör, dosya adı veya dosya uzantısı olabilir.

Yukarıdaki örnekte, Split-Path cmdlet'i verilen C:\Intel\project\ConvertString.ps1 yolunu ayrı parçalara ayırır. Uzantılı dosya adını çıkarmak için yukarıdaki -Leaf parametresini kullandık; görebildiğimiz gibi ConvertString.ps1 verilen yoldaki dosya adıdır.

Ayrıca, -LeafBase parametresi ile Split-Path komutunu kullanarak uzantısı olmayan dosya adlarını da alabileceğimizi unutmayın.

-LeafBase ile Bölünmüş Yol'u kullanın:

Split-Path C:\Intel\project\ConvertString.ps1 -LeafBase

ÇIKTI:

ConvertString

Görebildiğimiz gibi, ConvertString dosya adı ps1 uzantısı olmadan döndürüldü. Burada uzantısız dosya adını almak için yukarıda -LeafBase parametresi kullanıldı.

Not: Bu bağımsız değişkeni yalnızca PowerShell 6,0 veya sonraki sürümleri destekler.

Get-Item Cmdlet'ini kullanma

Dosya adını PowerShell'deki yoldan almak için Get-Item cmdlet'ini kullanın. Get-item cmdlet'i, öğeyi belirtilen konuma getirmek için kullanılır.

Get-Item Cmdlet'ini kullanın:

Get-Item C:\Intel\project\ConvertString.ps1

ÇIKTI:

Directory: C:\Intel\project

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        12/30/2022   9:35 PM            109 ConvertString.ps1

Burada belirtilen yoldan dosya adını almak için Get-Item cmdlet'ini kullandık; Ad sütununa bakarak dosyanın modunu, son güncelleme tarihini/saatini, uzunluğunu ve adını nerede bulacağımızı görebiliriz.

Bizim durumumuzda ConvertString.ps1 bir dosyanın adını temsil ediyordu. Dosya adını yalnızca uzantısıyla birlikte almak istiyorsanız, yukarıdaki komutun sonuna aşağıda gösterildiği gibi .Name ekleyin.

Get-Item Cmdlet'ini .Name ile kullanın:

(Get-Item C:\Intel\project\ConvertString.ps1).Name

ÇIKTI:

ConvertString.ps1

Yukarıda gördüğümüz gibi artık verilen yoldan yalnızca ConvertString.ps1 uzantılı dosya adını alıyoruz. Dosya uzantısını istemiyorsanız şunu deneyin:

Get-Item Cmdlet'ini .BaseName ile kullanın:

(Get-Item C:\Intel\project\ConvertString.ps1).BaseName

ÇIKTI:

ConvertString

Artık yalnızca ConvertString dosya adı döndürülür. Yukarıdaki .BaseName özelliğinin, uzantısı hariç dosya adını almak için kullanıldığına dikkat edin.

Get-ChildItem Cmdlet'ini kullanma

Verilen yoldan dosya adını almak için Get-ChildItem cmdlet'ini kullanın.

Get-ChildItem Cmdlet'ini kullanın:

(Get-ChildItem C:\Intel\project\ConvertString.ps1).Name
(Get-ChildItem C:\Intel\project\ConvertString.ps1).BaseName

ÇIKTI:

ConvertString.ps1
ConvertString

.Name özelliğine sahip Get-ChildItem, uzantıları olan dosya adlarını döndürdü ve .BaseName özelliği, uzantıları olmayan dosya adlarını döndürdü.

GetFileName() Yöntemini Kullanma

Verilen yolun dosya adını ve uzantısını almak için Path sınıfının GetFileName() yöntemini kullanın.

GetFileName Yöntemini kullanın:

[System.IO.Path]::GetFileName('C:\Intel\project\ConvertString.ps1')

ÇIKTI:

ConvertString.ps1

[System.IO.Path]::GetFileName('C:\Intel\project\ConvertString.ps1') komutu, dosya adını belirtilen C:\Intel\ dosya yolundan aldı System.IO.Path sınıfının GetFileName() yöntemini kullanarak project\ConvertString.ps1.

Burada, GetFileName() yöntemi dosya adını ve dosya uzantısını döndürdü ancak dizin yolunu döndürmedi. Örneğin, dosya yolu C:\Intel\project\ConvertString.ps1 ise, dosya adı ConvertString.ps1 olacaktır.

Dosya adını dosya uzantısı olmadan almak istiyorsanız bunun yerine System.IO.Path sınıfının GetFileNameWithoutExtension() yöntemini kullanabilirsiniz. Örneğin:

GetFileNameWithoutExtension Yöntemini kullanın:

[System.IO.Path]::GetFileNameWithoutExtension('C:\Intel\project\ConvertString.ps1')

ÇIKTI:

ConvertString

Birden Çok Dosya Adı Alma

PowerShell'de verilen yoldan uzantılı veya uzantısız birden fazla dosya adı alabiliriz.

Uzantılı

Uzantılı dosya adlarını almak için Get-ChildItem cmdlet'ini kullanarak belirli bir veya daha fazla konum kanalından öğeleri GetFileName() yöntemine alın.

Uzantılarla Birden Çok Dosya Adı Alın:

 Get-ChildItem -Path C:\Intel\project\ -Filter *.ps1 | ForEach-Object -Process {[System.IO.Path]::GetFileName($_)}

ÇIKTI:

ConvertString-toDate.ps1
FunctionsFile.ps1

Belirtilen bir veya daha fazla konumdan öğeleri çıkarmak için Get-ChildItem cmdlet'ini kullandık ve uzantılı dosya adlarını almak için GetFileName() yöntemine aktardık. Örneğin, C:\Intel\project\ konumundan dosyaları almak için Get-ChildItem kullanıldı.

.s1 uzantılı dosyaları almak için -Filter parametresi kullanıldı ve çıktıyı ardışık düzen (|) kullanarak bir sonraki komuta gönderdi. Daha sonra, verilen dizindeki her dosya üzerinde yineleme yapmak için ForEach-Object komutunu kullandık.

Daha sonra System.IO.Path sınıfının GetFileName() yöntemiyle birlikte -Process parametresi kullanılarak dosyaların adları çıkarıldı. uzatma ile. Verilen dizinden uzantısı olmayan birden fazla dosya da alabiliriz. Bunu nasıl yapabileceğimizi anlamak için aşağıya bakalım.

Uzantısız

Uzantısı olmayan dosya adlarını almak için bir veya daha fazla belirtilen konum kanalındaki öğeleri GetFileNameWithoutExtension() yöntemine çıkarmak için Get-ChildItem cmdlet'ini kullanın.

Uzantı Olmadan Birden Çok Dosya Adı Alın:

 Get-ChildItem -Path C:\Intel\project\ -Filter *.ps1 | ForEach-Object -Process {[System.IO.Path]::GetFileNameWithoutExtension($_)}                                       

ÇIKTI:

ConvertString-toDate
FunctionsFile

Yukarıdaki komut kullanılarak C:\Intel\project\ adresinde bulunan iki dosyanın döndürüldüğünü görebilirsiniz. Yukarıdaki kodun önceki bölümdekiyle aynı olduğunu unutmayın; dosya adlarını uzantıları olmadan almak için yalnızca GetFileName() yöntemini GetFileNameWithoutExtension() yöntemiyle değiştirdik.

Hepsi PowerShell'deki Path'den dosya adının nasıl alınacağıyla ilgili.

İlgili makaleler