PowerShell'de Bir Dosyanın Yolunu Nasıl Alabilirim?
Son zamanlarda PowerShell'de bir otomasyon betiğiyle çalışırken PowerShell'de bir dosyanın yolunu alma gereksinimiyle karşılaştım. PowerShell'de bir dosyanın yolunu almanın çeşitli yöntemleri vardır.
PowerShell'de bir dosyanın yolunu almak için Get-Item cmdlet'ini ve ardından FullName özelliğini kullanarak tek bir dosyanın tam yolunu alabilirsiniz. Örneğin, (Get-Item “C:\Path\To\Your\File.txt”).FullName, File.txt dosyasının tam yolunu döndürecektir. Birden fazla dosya yoluna ihtiyacınız varsa Get-ChildItem -Path “C:\Path\To\Directory” -Recurse | Bir dizindeki ve alt dizinlerindeki tüm dosyaların tam yollarını listelemek için-Object -ExpandProperty FullName'i seçin.
PowerShell'de Bir Dosyanın Yolunu Alın
1. Get-ChildItem'ı Kullanmak
PowerShell'deki Get-ChildItem cmdlet'i, belirtilen bir veya daha fazla konumdaki öğeleri listelemek için kullanılabilecek çok kullanışlı bir komuttur. Belirli bir dizindeki tüm dosyaların tam yolunu almak istiyorsanız diğer cmdlet'lerle birlikte Get-ChildItem'i kullanabilirsiniz.
Get-ChildItem -Path "C:\MyFolder\" -Recurse | Select-Object -ExpandProperty FullName-Recurse parametresi, belirtilen yolun tüm alt dizinlerindeki öğeleri almak için kullanılır. Daha sonra -ExpandProperty parametresine sahip Select-Object cmdlet'i tam yol bilgisini çıkarmak için kullanılır.
Kodu VS kodunu kullanarak çalıştırdım ve çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:
2. Çözümleme Yolunu Kullanma
Göreli bir yolunuz varsa ve onu tam yola çözümlemeniz gerekiyorsa cmdlet'i kullanabilirsiniz. Bu cmdlet, joker karakterler veya takma adlar içerebilecek yollarla çalışırken özellikle kullanışlıdır.
Resolve-Path -Path "Relative\Path\To\Your\File.txt"Bu, dosyanın tam çözümlenmiş yolunun çıktısını verecektir.
3. Şu Anda Yürütülen Komut Dosyasının Yolunu Alın
Bazen çalışmakta olan betiğin yolunu bulmanız gerekebilir. Bunu, betiğin çalıştırıldığı dizinin tam yolunu otomatik olarak içeren yerleşik $PSScriptRoot değişkenini kullanarak başarabilirsiniz.
$ScriptPath = $PSScriptRoot
Write-Host "The script is located in: $ScriptPath"Bu, ek cmdlet'ler olmadan yürütme yolunu almanın basit bir yoludur.
Çıktı için aşağıdaki ekran görüntüsünü görebilirsiniz:
4. Bölünmüş Yolu Kullanma
Split-Path cmdlet'i, PowerShell'de yol dizelerini işlemek için kullanabileceğiniz başka bir araçtır. Bir dosyanın tam yolunuz varsa ve yalnızca dizin bölümünü çıkarmak istiyorsanız, kullanılacak cmdlet Split-Path'tir.
$FilePath = "C:\MyFolder\File.txt"
$DirectoryPath = Split-Path -Path $FilePath
Write-Host "The file is located in: $DirectoryPath"Bu, dosya adı hariç, dosya yolunun dizin kısmını gösterecektir.
Çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz:
5. Get-ChildItem ve Split-Path'i Birleştirmek
Daha karmaşık bir örnek olarak, bir dizindeki tüm dosyaları listelemek için Get-ChildItem ve Split-Path'i birleştirip ardından ilgili dizin yollarının çıktısını alabilirsiniz.
Get-ChildItem -Path "C:\Your\Target\Directory" -Recurse | ForEach-Object {
$DirectoryPath = Split-Path -Path $_.FullName
Write-Host "File: $($_.Name) is in directory: $DirectoryPath"
}Bu komut dosyası, hedef dizinde ve alt dizinlerinde bulunan her dosyayı, her dosyanın bulunduğu dizinin tam yolu ile birlikte listeler.
6. Get-Location'ı Kullanmak
Yalnızca çalıştığınız dizini bilmek istiyorsanız Get-Location bu bilgiyi sağlayacaktır. Bu cmdlet geçerli çalışma dizini yolunu döndürür.
$CurrentDirectory = Get-Location
Write-Host "The current directory is: $CurrentDirectory"7. Özel İşlevleri Kullanma
İleri düzey kullanıcılar için PowerShell, yolların alınmasını belirli ihtiyaçlara göre uyarlamak için özel işlevlerin oluşturulmasına olanak tanır. Örneğin, dosya yollarının çıktısını belirli ölçütlere göre filtreleyen ve biçimlendiren bir işlev oluşturabilirsiniz.
function Get-FilePaths {
param(
[string]$Directory,
[string]$Filter = "*.*"
)
Get-ChildItem -Path $Directory -Filter $Filter -Recurse | ForEach-Object {
$_.FullName
}
}
# Usage
Get-FilePaths -Directory "C:\Your\Target\Directory" -Filter "*.txt"Bu özel işlev Get-FilePaths, ilgilendiğiniz dosya türleri için bir dizin ve filtre belirtmenize olanak tanır. Daha sonra, filtreyle eşleşen tüm dosyaların tam yollarını listeler.
Çözüm
PowerShell, her biri farklı senaryolara uygun olan dosya yollarını almak için birden fazla yol sağlar. Geçerli dizini almanın basit bir yolunu arıyorsanız, göreceli bir yolu çözümlemeniz gerekiyorsa veya bir dizindeki tüm dosyaların tam yollarıyla birlikte bir listesine ihtiyaç duyuyorsanız, PowerShell'in bunu başarmak için farklı yöntemleri vardır.
Bu PowerShell eğitiminde farklı yöntemler kullanarak PowerShell'de dosya yolunun nasıl alınacağını anlattım.


