Giriş
Dosyanın okunabilirliğini kontrol etmek için önce
Test-Path kullanılabilir.
Dosyayı bir Object[] içine okur. Ayraç olarak newline kullanılır. Sonucun string dizisi olduğunu görmek için şöyle
yaparız$object = Get-Content data.txt
$object.GetType()
IsPublic IsSerial Name BaseType
True True Object[] System.Array
ÖrnekŞöyle yaparız. Her satırı okur. INSERT INTO ile başlıyorsa ilk ' (single quote) karakterini bulur. ' karakterini escape etmek için 4 defa '''' şeklinde kullanmak gerek.
foreach($line in Get-Content data.sql) {
if($line.StartsWith('INSERT INTO')) {
$startIndex = $line.IndexOf(''''');
if ($startIndex -ne -1) {
$endIndex = $line.IndexOf('''',$startIndex + 1)
$length = $endIndex - $startIndex + 1
Write-Output $line.SubString($startIndex,$length);
}
}
}
Örnek
Bir başka bilgisayardaki dosyayı okumak için şöyle
yaparızGet-Content -Path "\\xx.xxx.xx.xxx\c$\App_configuration.txt"
-Raw seçeneği
Dosyayı tek bir string değişkeni içine okur
Örnek
$text = Get-Content .\file.txt -Raw
Örnekİkinci dosyadaki bir alanı birinci dosyada içeren satırları bulmak için şöyle yaparız
$filename="insert.txt"
Remove-Item $filename
$file1 = Get-Content -RAW .\file1.txt
$file1lines = $file1.Split(';')
$file2 = Get-Content -RAW .\file2.txt
$file2lines = $file2.Split(';')
foreach($file2line in file2lines) {
$file2line = $file2line - replace "'n'r",""
$file2line = $file2line.Trim()
if($file2line.StartsWith('INSERT INTO')) {
$startIndex = $file2line.IndexOf(''''');
if ($startIndex -ne -1) {
$endIndex = $file2line.IndexOf('''',$startIndex + 1)
$length = $endIndex - $startIndex + 1
$id = $file2line.SubString($startIndex,$length);
$file1lines |foreach {
if ($_.Contains($id) {
$_ | Out-File -Append -FilePath $filename
}
}
}
}
}