catUnix'te komutun işlevselliğini kopyalamaya çalışıyorum .
Her iki dosyayı da değişkenler halinde açıkça okuduğum, değişkenleri birleştirdiğim ve ardından birleştirilmiş değişkeni yazdığım çözümlerden kaçınmak istiyorum.
catUnix'te komutun işlevselliğini kopyalamaya çalışıyorum .
Her iki dosyayı da değişkenler halinde açıkça okuduğum, değişkenleri birleştirdiğim ve ardından birleştirilmiş değişkeni yazdığım çözümlerden kaçınmak istiyorum.
Yanıtlar:
Basitçe kullanabilirsiniz cat example1.txt, example2.txt | sc examples.txt. Bu stille ikiden fazla dosyayı da kesinlikle birleştirebilirsiniz. Ayrıca, dosyalar benzer şekilde adlandırılırsa şunları kullanabilirsiniz:
cat example*.txt | sc allexamples.txt
catİçin bir takma ad Get-Contentve scbir diğer adıdır Set-Content.
Not 1 : İkinci yönteme dikkat edin - çıktı almaya çalışırsanız examples.txt(veya desene uyan benzer), PowerShell sonsuz bir döngüye girecektir! (Bunu daha yeni test ettim).
Not 2 : Bir dosyaya çıktı almak >karakter kodlamasını korumaz! Bu nedenle Set-Content( sc) kullanılması önerilir.
Set-Contentulusal kod sayfasını kullandığına dikkat edin (örn. İngilizce için Windows-1252). Kaynak dosyalar başka kodlamalar içeriyorsa (ör. Windows-1251 veya UTF8), doğru kodlamayı ayarlamanız gerekir sc file.txt -Encoding UTF8(Rusça için 1251 gibi sayılar v6.2'den beri desteklenmektedir)
Add-Content, komutu iki kez çalıştırırsanız, toplanan dosyanın iki kat daha uzun olmasıdır. İyi bir yedek Out-File. Buradaki
Get-Content my.bin -Raw | Set-Content my.bin -NoNewlinedeğiştirmez my.bindamgaları dışında. -Rawherhangi bir CR / LF baytını korurken -NoNewlinePowerShell'in kendi CR / LF baytlarını eklemesini engeller.
Kullanmayın >; karakter kodlamasını bozar. Kullanım:
Get-Content files.* | Set-Content newfile.file
catiçin bir takma addır Get-Content.
ÿþolan alıyordum . FF FE>
İçinde cmdbunu yapabilirsiniz:
copy one.txt+two.txt+three.txt four.txt
PowerShell'de bu şöyle olacaktır:
cmd /c copy one.txt+two.txt+three.txt four.txt
PowerShell yöntemi gc kullanmak olsa da , yukarıdakiler özellikle büyük dosyalar için oldukça hızlı olacaktır. ASCII olmayan dosyalarda da /Banahtar kullanılarak kullanılabilir .
Sen kullanabilirsiniz Eklenti İçerik cmdlet'ini. Belki diğer çözümlerden biraz daha hızlıdır çünkü ilk dosyanın içeriğini alamıyorum.
gc .\file2.txt| Add-Content -Path .\file1.txt
gcatıfta bulunuyor?
gcGet-Content
Dosyaları komut isteminde birleştirmek için
type file1.txt file2.txt file3.txt > files.txt
PowerShell, typekomutu olarak dönüştürür; Get-Contentbu type, PowerShell'de komutu kullanırken bir hata alacağınız anlamına gelir çünkü Get-Contentkomut, dosyaları ayırmak için virgül gerektirir. PowerShell'deki aynı komut şöyle olacaktır:
Get-Content file1.txt,file2.txt,file3.txt | Set-Content files.txt
Kullandım:
Get-Content c:\FileToAppend_*.log | Out-File -FilePath C:\DestinationFile.log
-Encoding ASCII -Append
Bu iyi eklendi. Açık kodlama olmadan Notepad ++ 'nın gösterdiği nul karakterleri kaldırmak için ASCII kodlamasını ekledim.
Şunun gibi bir şey yapabilirsiniz:
get-content input_file1 > output_file
get-content input_file2 >> output_file
Nerede >"out-file" için bir takma ad olduğunu ve >> "out-file -append" için bir diğer adıdır.
Diğer yanıtların çoğu genellikle biçimlendirmeyi yanlış anladığından (kanallar nedeniyle), yapılacak en güvenli şey şu şekildedir:
add-content $YourMasterFile -value (get-content $SomeAdditionalFile)
$ SomeAdditionalFile içeriğini bir değişkene okumaktan kaçınmak istediğinizi biliyorum, ancak örneğin yeni satır biçimlendirmenizi kaydetmek için, bunu olmadan yapmanın uygun bir yolu olduğunu düşünmüyorum.
Bir çözüm, $ SomeAdditionalFile satırınızı satır satır döngüye sokmak ve bunu $ YourMasterFile dosyanıza aktarmak olabilir. Ancak bu aşırı kaynak gerektirir.