PowerShell'de Dosyayı Dize Olarak Oku [3 Yol]
Get-Content Cmdlet'ini kullanma
Bir dosyanın içeriğini bir dizeye okumak için Get-Content cmdlet'ini kullanabiliriz.
Tek Bir Dosyayı Okumak için Get-Content Cmdlet'ini kullanın
PowerShell'de tek bir dosyayı bir dizeye okumak için:
- Dosyanın içeriğini bir dizeye okumak için
Get-Contentcmdlet'ini-Rawparametresiyle birlikte kullanın. - Sonucun veri türünü kontrol etmek için
.GetType()yöntemini kullanın.
Tek Bir Dosyayı Okuyun:
$file = "D:\abc.txt"
$content = Get-Content -Path $file -Raw
($content.GetType()).NameÇIKTI:
String
PowerShell'deki Get-Content cmdlet'i, bir dosyanın içeriğini veya başka bir cmdlet'in çıktısı gibi diğer giriş ve çıkış nesnelerini okur. Cmdlet, içeriği bir dize dizisi olarak döndürür. Yapılandırma dosyalarını, günlük dosyalarını, CSV dosyalarını veya başka herhangi bir metin dosyasını okumak için kullanabiliriz.
Örneğin, Get-Content cmdlet'inin -Path parametresini okuması için file değeriyle sağladık. Varsayılan olarak, Get-Content, dosyanın veya nesnenin içeriğini, dosyanın veya nesnenin her satırı için bir dize olacak şekilde bir dizi dize olarak döndürür.
Get-Content cmdlet'i -Raw parametresini kullanarak dosyanın veya nesnenin tüm içeriğini tek bir dize olarak döndürür. Bu nedenle, file dosyasını tek bir dize olarak okumak için Get-Content cmdlet'inin -Raw parametresini kullandık ve sonucu içerik değişkeni.
İçerik'in türünü kontrol etmek için Type nesnesini döndüren nesnenin türünü belirleyen GetType() yöntemini kullandık. Daha sonra türün adını konsolda görüntülemek için .Name özelliğini kullandık.
Birden Çok Dosyayı Okumak için Get-Content Cmdlet'ini forreach döngüsüyle kullanın
PowerShell'de birden fazla dosyayı tek bir Dize olarak okumak için Get-Content cmdlet'inin çıkışında -join parametresini kullanın.
Birden Çok Dosyayı Okuyun:
$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$content = (Get-Content -Path $files -Raw) -join '`n'
($content.GetType()).NameÇIKTI:
StringGet-Content cmdlet'ini kullanarak birden fazla dosyayı okuyabiliriz. Bunun için tüm dosyaları virgülle ayırarak files değişkeninde sakladık ve tek bir dosyanın okunması için kod bölümünü anlatırken bahsettiğimiz Get-Content cmdlet'ini kullanarak okuduk. bir dizeye dosyalayın.
PowerShell'deki -join parametresi bir dizinin veya koleksiyonun öğelerini tek bir dizede birleştirir. Örneğin, Get-Content cmdlet'inin çıktılarını, dosya satırlarını yeni bir satır ayırıcı kullanarak birleştiren n operatörüyle birleştirdik. Daha sonra veri türünü kontrol etmek için content`e GetType() yöntemini uyguladık.
-Raw parametresinin yalnızca PowerShell 3.0+ sürümlerinde çalıştığı söylenemez.
PowerShell Sürüm 2.0+ için
PowerShell sürüm 2.0+'da bir dosyayı bir dizeye okumak için yukarıda tartışılan kodun -Raw parametresini Out-String cmdlet'i ve bir kanalla değiştirin (|) operatörü.
Out-String Cmdlet'iyle Get-Content'i kullanın:
$file = "d:\abc.txt"
$content = (Get-Content -Path $file) | Out-String
($content.GetType()).NameÇIKTI:
StringYukarıda belirtilen kod bölümlerinde Get-Content cmdlet'ini tartıştık. Bu bölümde dosyayı string olarak okumak için -Raw parametresi yerine Out-String cmdlet'ini kullandık.
Out-String cmdlet'i bir komutun veya betiğin çıktısını bir dizeye dönüştürür. Bir komutun veya betiğin çıktısını alır ve onu tek bir dizede birleştirir. Örneğin, file dosyasını tek bir dize olarak okumak için Get-Content cmdlet'inin çıktısını Out-String cmdlet'ine aktardık.
-Out-String cmdlet'inin -Raw parametresinden daha esnek olduğunu unutmayın, çünkü onu herhangi bir cmdlet veya komut dosyasıyla kullanabiliriz. Ayrıca -join parametresine ihtiyaç duymadan birden fazla dosyayı okuyabilir:
Out-String Cmdlet'iyle Get-Content'i kullanın:
$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$content = (Get-Content -Path $files) | Out-String
($content.GetType()).Name ÇIKTI:
String[System.IO.File]::ReadAllText() Yöntemini Kullanma
PowerShell'de bir dosyayı bir dizeye okumak için [System.IO.File]::ReadAllText() yöntemini kullanın.
ReadAllText() Yöntemini kullanın:
$file = "d:\abc.txt"
$content = [IO.File]::ReadAllText($file)
($content.GetType()).Name
ÇIKTI:
StringSystem.IO.File, .NET Framework'te bulunan ve PowerShell'deki dosyalar ve dizinlerle çalışmaya yönelik (dosyaları okuma ve yazma, dosya oluşturma, taşıma ve silme ve daha fazlası gibi) çeşitli yöntemler sağlayan statik bir sınıftır.
ReadAllText() yöntemi dosyayı argüman olarak alır ve içeriğini bir dize olarak döndürür. Bu yöntemi file içeriğini okumak için kullandık ve bunları content değişkeninde tek bir dize olarak sakladık. Dosyanın veri tipini doğrulamak için Get-content kullanımı için kod bölümünde bahsettiğimiz content üzerine GetType() yöntemini uyguladık. cmdlet'i kullanın.
Birden Çok Dosyayı Okumak için [System.IO.File]::ReadAllText() Yöntemini foreach döngüsüyle kullanın
Birden fazla dosyayı okumak için, her dosya için [System.IO.File]::ReadAllText() sonucunu ekleyin ve bunu foreach bloğunun içine sarın.
Birden Çok Dosyayı Okuyun:
$files = 'D:\a.txt', 'D:\b.txt', 'D:\c.txt'
$contents = ""
foreach ($file in $files) {
$contents += [System.IO.File]::ReadAllText($file)
}
($contents.GetType()).nameÇIKTI:
StringSystem.IO.File'da birden fazla dosyayı okumaya yönelik yerleşik bir yöntem yoktur. foreach döngüsünü kullandık. Döngünün içinde, files koleksiyonundaki her dosyayı okuyan ve sonuçları içerikler halinde birleştiren değişken. Son olarak, konsolda ReadAllText() yöntemini kullandık. String yazdıran GetType() yöntemini kullanarak contents'ın veri türünü kontrol ettik.
Out-String Cmdlet'iyle Değişken Gösterimini Kullanma
Dosyayı tek bir dize olarak okumak için değişken gösterimini kullanın.
Out-String Cmdlet'iyle Değişken Gösterimini kullanın:
$content = ${d:\abc.txt} | Out-String
($content.GetType()).NameÇIKTI:
StringDeğişken gösteriminde, dosya yolunu, önüne dolar ($) simgesinin geldiği küme parantezleri içine aldık. Out-String cmdlet'ini kullanarak tek bir dizeye dönüştürdüğümüz bir dizi nesnesi döndürdü. Daha sonra GetType() yöntemini kullanarak içerik'in veri türünü doğruladık.
Benzer şekilde, birden fazla dosyayı tek bir dizede okumak için:
Out-String Cmdlet'iyle Değişken Gösterimini kullanın:
$content = ${d:\a.txt}, ${d:\b.txt} | Out-String
($content.gettype()).NameÇIKTI:
String