cat
Unix'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.
cat
Unix'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-Content
ve sc
bir 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-Content
ulusal 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 -NoNewline
değiştirmez my.bin
damgaları dışında. -Raw
herhangi bir CR / LF baytını korurken -NoNewline
PowerShell'in kendi CR / LF baytlarını eklemesini engeller.
Kullanmayın >
; karakter kodlamasını bozar. Kullanım:
Get-Content files.* | Set-Content newfile.file
cat
için bir takma addır Get-Content
.
ÿþ
olan alıyordum . FF FE
>
İçinde cmd
bunu 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 /B
anahtar 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
gc
atıfta bulunuyor?
gc
Get-Content
Dosyaları komut isteminde birleştirmek için
type file1.txt file2.txt file3.txt > files.txt
PowerShell, type
komutu olarak dönüştürür; Get-Content
bu type
, PowerShell'de komutu kullanırken bir hata alacağınız anlamına gelir çünkü Get-Content
komut, 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.