PowerShell'de Dosyanın Üzerine Yazma [3 Yol]
Set-Content Cmdlet'ini kullanma
PowerShell'de bir dosyanın üzerine yazmak için Set-Content cmdlet'ini kullanın.
-Value Parametresi ile Set-Content Cmdlet'i kullanın:
Set-Content -Path E:\Test\File1.txt -Value "Greetings"Dosya1.txt'nin içeriği:
GreetingsBaşlangıçta, File1.txt dosyasının içeriği Hi!'a sahipti, ancak daha sonra bunun üzerine yazıldı ve şimdi yukarıdaki çıktıda gösterildiği gibi içeriği içeriyor. Set-Content, mevcut bir dosyanın içeriğinin üzerine yazmak için kullandığımız dize işleme cmdlet'i olarak bilinir. Örneğin, var olmayan bir dosya için yol belirttiğinizi varsayalım; daha sonra Set-Content bu dosyayı oluşturacak ve belirtilen içeriği yazacaktır.
Bunu Add-Content cmdlet'iyle karıştırabilirsiniz, ancak Set-Content ve Add-Content cmdlet'leri arasında bariz bir fark vardır. İçerik Ayarla mevcut içeriğin yerini alırken, İçerik Ekle içeriği belirtilen dosyaya ekler.
-Value parametresi kullanılarak gönderilen içeriği alacak dosya/öğenin yolunu belirtmek için -Path parametresini kullandık. Dosya yolunu verirken joker karakter kullanmamıza izin verildiğini unutmayın. Örneğin, adı Dosya kelimesiyle başlayan her metin dosyasının üzerine yazmak istiyoruz; aşağıdaki örneğe bakın.
Birden Çok Metin Dosyasının Üzerine Yazmak için Set-Content'i kullanın:
Set-Content -Path E:\Test\File*.txt -Value "Hello World"Tüm Dosya*.txt Dosyalarının İçeriği:
Hello WorldBurada, dosya adlarında Dosya sözcüğünden sonra herhangi bir sayıda karakter bulunan tüm metin dosyalarının üzerine yazmak için yıldız işareti (*) kullandık; her dosya adının Dosya ile başlayıp .txt ile bitmesi gerektiğini unutmayın; arada herhangi bir sayıda karakter olabilir, *'ın yapması gereken de budur. Yukarıdaki örnek komutların tümü, içeriği Set-Content cmdlet'ine göndermek için -Value parametresini kullanır, ancak ardışık düzeni kullanarak içerik gönderebileceğimizi biliyor muydunuz? Nasıl? Aşağıdaki örneğe bakın.
Set-Content Cmdlet'i Pipline ile kullanın:
"Write This Content" | Set-Content -Path E:\Test\File1.txtDosya1.txt'nin içeriği:
Write This ContentBurada, içeriği verilen metin dosyasında üzerine yazılacak olan Set-Content'e iletmek için boru hattını (|) kullandık. File1.txt dosyasının güncel içeriğine bakmak için Get-Content cmdlet'ini aşağıdaki gibi kullanabiliriz.
Get-Content Cmdlet'i kullanın:
Get-Content -Path E:\Test\File1.txtDosya1.txt'nin içeriği:
Write this Content
Kullanıcılara hâlâ dosyanın üzerine yazmak isteyip istemediklerini sorma zorunluluğumuz olduğunu varsayalım. Bu durumda kullanıcıyı uyarmak ve hala dosyanın üzerine yazmak istediğinden emin olmak için -Confirm parametresini aşağıda verildiği gibi kullanabiliriz.
Set-Content Cmdlet'i -Confirm Parametresi ile kullanın:
Set-Content -Path E:\Test\File1.txt -Value "Greetings" -ConfirmÇIKTI:
Confirm
Are you sure you want to perform this action?
Performing the operation "Set Content" on target "Path: E:\Test\File1.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Confirm
Are you sure you want to perform this action?
Performing the operation "Clear Content" on target "Item: E:\Test\File1.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): YBunun aksine herhangi bir koşulda dosyanın üzerine yazmamız gerekirse -Force parametresini aşağıdaki gibi kullanabiliriz. Bu parametre, dosya salt okunur olsa bile cmdlet'i dosyanın üzerine yazmaya zorlar. Bu parametrenin güvenlik kısıtlamalarını geçersiz kılmadığını unutmayın.
Set-Content Cmdlet'i -Force Parametresi ile kullanın:
Set-Content -Path E:\Test\File1.txt -Value "Greetings" -ForceDosya1.txt'nin içeriği:
GreetingsTuş vuruşlarını azaltmak için Set-Content cmdlet'inin sc takma adını da kullanabiliriz. Proje ihtiyaçlarınıza göre kullanmak için bu sayfadan daha fazla değerli parametre öğrenebilirsiniz.
Out-File Cmdlet'ini kullanma
PowerShell'de bir dosyanın üzerine yazmak için Out-File cmdlet'ini kullanın.
Dosya Dışı Cmdlet'i Kullan:
"Some content" | Out-File -FilePath E:\Test\File1.txtDosya1.txt'nin içeriği:
Some content
Öncelikle dosyaya yazmak istediğimiz içeriği yazdık. Daha sonra bu içerik, (önceki işlemden alınan) çıktıyı verilen dosyaya göndermek için kullandığımız ardışık düzen (|) kullanılarak Out-File cmdlet'ine iletildi. . Belirtilen dosyaya yazmak için örtülü olarak PowerShell'in biçimlendirme sistemini kullanır.
Out-File cmdlet'i kullanılırken, belirtilen dosya terminal/konsol olarak tam ekran temsilini alacaktır; bu, tüm giriş nesneleri dizeler olmadığı sürece çeşitli programlı işlemler için uygun olmayabileceği anlamına gelir.
Set-Content gibi, Out-File da belirtilen dosyayı mevcut değilse oluşturacak ve içeriği bu dosyaya yazacaktır. Ayrıca Set-Content cmdlet'ini kullanarak öğrendiğimiz gibi çalışan -Force ve -Confirm parametrelerine de sahiptir. Ayrıca Out-File'ın heyecan verici başka bir parametresi daha var: -NoClobber.
-NoClobber, mevcut dosyanın üzerine yazılmasını engeller ve kullanıcıya, üzerine yazmak istediği dosyanın zaten mevcut olduğu konusunda bilgi verir. Bu nedenle, eğer mevcut dosyaların üzerine yazmama gibi bir durumunuz varsa -NoClobber parametresini kullanmayı unutmayın çünkü Out-File cmdlet'inin varsayılan davranışı şu şekildedir: uyarı vermeden dosyanın üzerine yazın.
-NoClobber Parametresi ile Out-File Cmdlet'ini kullanın:
"Some content" | Out-File -FilePath E:\Test\File1.txt -NoClobberYukarıdaki komut şunu söyleyen bir uyarı üretecektir: Dosya Dışı: 'E:\Test\File1.txt' dosyası zaten mevcut.
NOT:
Out-Filecmdlet'ini kullanırken,-FilePathparametresini kullanarak yolu belirtirken joker karakterler kullanmamıza izin verilmez; aksi halde bir uyarı oluşturacaktır.
Copy-Item Cmdlet'ini kullanma
Kaynak dosyanın tüm içeriğini kopyalamak ve PowerShell'deki hedef dosyanın üzerine yazmak için Copy-Item cmdlet'ini kullanın.
Dosya1.txt'nin içeriği:
This is the source sample text.File2.txt'nin içeriği:
This is the destination sample text.Öğeyi Kopyala Cmdlet'ini kullanın:
Copy-Item -Path E:\Test\File1.txt -Destination E:\Test\File2.txt -ForceFile2.txt'nin En Son İçeriği:
This is the source sample text.Set-Content cmdlet'ini kullanarak -Force parametresini zaten öğrenmiştik. Burada -Path ve -Destination parametreleri sırasıyla kaynak dosyanın ve hedef dosyanın yolunu belirtir. Kaynak dosyanın içeriğini (File1.txt) kopyalayıp hedef dosyaya (File2.txt) yapıştırmak için Copy-Item'i kullandık. önceki içeriğin üzerine yazılması.
Copy-Item, yolu belirtirken joker karakter operatörlerini kullanmamıza olanak tanır, ancak beklenmeyen sonuçlardan kaçınmak için perde arkasında neler olup bittiğinin farkında olmamızı sağlar. Örneğin aşağıdaki kodun birden fazla kaynak dosyadaki içeriği kopyalayıp hedef dosyaya yapıştıracağını düşünüyorsanız anlayışınızı düzeltmelisiniz.
Copy-Item cmdlet'ini kullanın:
Copy-Item -Path E:\Test\SampleFile*.txt -Destination E:\Test\File2.txt -ForceBunun nedeni, Copy-Item cmdlet'inin yeni içeriği önceki içeriğin üzerine yazarak yapıştırdığını öğrenmiş olmamızdır; bu, her kaynak dosyanın içeriğini önceki içeriğin üzerine yazarak yapıştıracağı anlamına gelir. Bu şekilde tüm kaynak dosyalarına değil, yalnızca son kaynak dosyanın içeriğine sahip olacağız.
Dosyanın üzerine yazmanın üç farklı yolunu öğrendik, ancak hangi yaklaşımı ne zaman kullanmamız gerekiyor? Daha iyi bir karar vermek için aşağıdaki noktaları aklınızda bulundurun:
- Dosyaları ve dizinleri kopyalamak için
Copy-Item'i kullanırız. - Dize ve dize olmayan nesneleri bir metin dosyasına göndermek için
Dosya Dışı'ı kullanırız ve mevcut bir dosyayı eklemek veya oluşturmak için kullanılabilir.Out-Fileçalışırken başka bir uygulama bir dosyayı okuyabilir. Çıktının süslü biçimlendirmesini terminalde görüldüğü gibi metin dosyasına kaydeder. - Dize türü içeriği bir metin dosyasına göndermek için
Set-Contentkullanırız. İçerik dize değilse, bu cmdlet onu bir metin dosyasına yazmadan/göndermeden önce onu bir dizeye dönüştürür.Set-Contentçalışırken diğer uygulamalar dosyayı okuyamaz. Bu, metin dosyasında daha basit bir temsili kaydeder.
