2013-08-27 41 views
36

Tôi đã so sánh hai tập tin bằng cách sử dụng đoạn mã sau:Viết đầu ra vào một tập tin văn bản trong PowerShell

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) 

Làm thế nào tôi có thể viết ra những điều này vào một tập tin văn bản mới? Tôi đã thử sử dụng một lệnh echo, nhưng tôi không thực sự hiểu cú pháp.

Trả lời

61

Sử dụng Out-File cmdlet

Compare-Object ... | Out-File C:\filename.txt 

Tùy chọn, thêm -Encoding utf8-Out-File như mã hóa mặc định là không thực sự lý tưởng cho nhiều công dụng.

+4

Điều gì về thông báo STDOUT (thông tin) so với STDERR (lỗi)? Cả hai sẽ đi ra ngoài tập tin? – Jess

14

Cách đơn giản nhất là chỉ cần chuyển hướng đầu ra, như vậy:

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) > c:\user\documents\diff_output.txt 

> sẽ gây ra các tập tin đầu ra để được ghi đè nếu nó đã tồn tại.
>> sẽ nối văn bản mới vào cuối tệp đầu ra nếu nó đã tồn tại.

+5

Đây là phương pháp cmd/dos. Đối với powershell tôi nghĩ rằng Out-File là một thói quen tốt hơn để có được thành –

+0

@AthomSfere, tôi đồng ý. Tôi vẫn đang học PowerShell, và thói quen cũ chết rất khó. :) – Matt

+1

Đây cũng là cách Unix, nếu bạn đang sử dụng cửa sổ bằng vũ lực, đây là cách. –