PowerShell'deki Dosya Adlarından Dosya Uzantıları Nasıl Alınır?
PowerShell kullanarak dosya adlarından dosya uzantılarını ayıklamam gerektiğinde bir otomasyon projesi üzerinde çalışıyordum. Farklı yöntemler denedim ve bu eğitimde, dosya uzantısını PowerShell'deki bir dosya adından tam komut dosyalarıyla almak için çeşitli yöntemleri araştıracağım.
Dosya uzantısını PowerShell'deki bir dosya adından almak için [System.IO.Path] sınıfından Get-Extension yöntemini kullanabilirsiniz. Örneğin, $fileExtension=[System.IO.Path]::GetExtension('C:\example\report.xlsx'), '.xlsx' dizesini $fileExtension değişkeninde saklar. Bu yöntem, dosya türünü belirten son ekin çıkarılması açısından basit ve etkilidir.
PowerShell'deki Dosya Adlarından Dosya Uzantılarını Alma
Dosya uzantısı, dosya adının sonunda bulunan ve dosya türünü belirten bir sonektir. Ana dosya adından bir nokta ile ayrılır. Örneğin, 'belge.pdf'de '.pdf', dosyanın bir PDF belgesi olduğunu gösteren dosya uzantısıdır.
PowerShell, dosya uzantısını bir dosya adından almak için farklı yöntemler ve cmdlet'ler sağlar.
Yöntem 1: System.IO.Path Sınıfını Kullanma
PowerShell'de dosya uzantısı almanın en basit yollarından biri [System.IO.Path] sınıfını kullanmaktır. Bu sınıf, dizinler ve dosyalar aracılığıyla oluşturma, taşıma ve numaralandırma için statik yöntemler sağlar.
Dosya uzantısını ayıklamak için [System.IO.Path] sınıfının nasıl kullanılacağını açıklayan örnek bir komut dosyası:
# Define the full path of the file
$filePath = "C:\MyFolder\users.xlsx"
# Extract the extension from the file path
$fileExtension = [System.IO.Path]::GetExtension($filePath)
# Display the file extension
Write-Host "The file extension is: $fileExtension"Yukarıdaki PowerShell betiğinde, dosya uzantısını dosyanın tam yolundan elde etmek için GetExtension() yöntemi kullanılır.
Betiği vs kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz.
Yöntem 2: Get-ChildItem ve Select-Object'i kullanma
PowerShell'in Get-ChildItem cmdlet'i, dosyalar hakkındaki ayrıntıları almanın başka bir yoludur. Select-Object cmdlet'iyle birlikte dosya uzantısını izole edebilir ve görüntüleyebilirsiniz.
Dosya uzantısını almak için bu cmdlet'leri şu şekilde kullanabilirsiniz:
# Define the directory path
$directoryPath = "C:\MyFolder"
# Get all files in the directory and select only the extension property
$fileExtensions = Get-ChildItem -Path $directoryPath | Select-Object Extension
# Display the file extensions
$fileExtensions | ForEach-Object { Write-Host "Found file extension: $($_.Extension)" }Bu komut dosyası, belirtilen dizindeki tüm dosyaları alır ve ardından her dosyanın yalnızca uzantı özelliğini seçmek için Select-Object'i kullanır.
Aşağıdaki ekran görüntüsündeki çıktıya bakın; belirtilen klasördeki tüm dosya uzantılarını görüntüler. Bahsedilmeyen uzantıların olduğu yerler alt klasörlerdir.
Yöntem 3: Bölünmüş Yol Kullanma
PowerShell'deki Split-Path cmdlet'i, belirli bir konumun hem yolunu hem de yaprağını yönetmek için tasarlanmıştır. Uzantıyı izole ederek yolu ve dosya adını bölmek için kullanabilirsiniz.
Bölünmüş Yol kullanan örnek komut dosyası:
# Define the full file path
$filePath = "C:\MyFolder\Customers.xlsx"
# Use Split-Path to separate the file name and extension
$fileNameAndExtension = Split-Path -Path $filePath -Leaf
# Extract the extension from the full file name
$fileExtension = $fileNameAndExtension -replace '.*\.'
# Display the file extension
Write-Host "The file extension is: $fileExtension"Bu komut dosyasında, Split-Path yolun yaprağını (dosya adı ve uzantısı) alır ve ardından noktadan önceki her şeyi kaldırmak ve yalnızca uzantıyı bırakmak için normal bir ifade kullanılır.
Betiği VS kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz.
Yöntem 4: Normal İfadeleri Kullanma
PowerShell ayrıca dosya uzantısını bir dosya adından çıkarmak için normal ifadeleri de kullanabilir.
Uzantıyı bulmak için normal ifadeyi kullanan bir komut dosyası:
# Define the filename
$fileName = "archive.tar.gz"
# Use regex to extract the file extension
if ($fileName -match "\.(?<Extension>[^.]+)$") {
$fileExtension = $Matches['Extension']
Write-Host "The file extension is: $fileExtension"
} else {
Write-Host "No file extension found."
}Bu komut dosyası, dosya adının bir dosya uzantısı modeliyle eşleşip eşleşmediğini kontrol etmek için -match operatörünü kullanır. Bir eşleşme bulunursa $Matches otomatik değişkenini kullanarak uzantıyı çıkarır.
Çözüm
Artık PowerShell'deki dosya adlarından dosya uzantılarını nasıl alacağınızı öğrenmeniz gerektiğini umuyorum. Dosya adlarından dosya uzantıları almak için [System.IO.Path] sınıfını veya Get-ChildItem cmdlet'ini Split kullanarak kullanmak gibi farklı yöntemleri açıkladım. -Path veya normal ifadeler vb. kullanarak. Umarım yardımcı olur.
Şunları da beğenebilirsiniz:
- PowerShell'de Dosyayı İsme Göre Nasıl Bulunur?
- PowerShell'de Dosyaları Tarihle Yeniden Adlandırın
- Dosya Adlarını Yalnızca PowerShell'de Nasıl Listeleyebilirim?
- PowerShell'de Dosyaları Kopyalayın ve Yeniden Adlandırın


