将输出数据添加到 1 个文本文件
Adding output data to 1 text file
正如您在下面看到的,提取了文件夹中所有 .msg 文件的内容。但是,我只能在输出 content.txt 中看到 1 个 .msg 内容,而不是所有 .msg 文件。如何循环命令并添加到同一个 .txt 文件?
$output_file3 = ‘c:\outlook_files\content.txt’
# Search messages
Get-ChildItem "c:\outlook_files\msg\" -Filter *.msg | Foreach-Object {
# Read current message content
$content = Get-Content $_.FullName >$output_file3
}
不使用重定向,而是使用 Out-File -append
或 Add-Content
所以改变
$content = Get-Content $_.FullName >$output_file3
到
Get-Content $_.FullName | out-file $output_file3 -append
我放弃了变量赋值,因为它在这个上下文中没有做任何事情。
>
redirection operator 截断现有文件。要么使用追加操作:
Get-Content $_.FullName >>$output_file3
Get-Content $_.FullName | Add-Content $output_file3
Get-Content $_.FullName | Out-File $output_file3 -Append
或者在ForEach-Object
循环之后写操作:
ForEach-Object {
Get-Content $_.FullName
} >$output_file3
ForEach-Object {
Get-Content $_.FullName
} | Set-Content $output_file3
ForEach-Object {
Get-Content $_.FullName
} | Out-File $output_file3
通常您更喜欢 *-Content
或 Out-File
cmdlet 而不是重定向运算符,因为它们可以让您更好地控制写入文件的内容(即编码)。 Out-File
和 Set-Content
/Add-Content
之间的主要区别在于前者默认为 Unicode(准确地说是小端 UTF-16),而后者默认为 Ascii(实际上是 windows-1252ANSI 编码).
如果你不想白白循环,你可以简单地这样做
Get-Content "c:\outlook_files\msg\*.msg" | Out-File "c:\outlook_files\content.txt"
或
Get-Content "c:\outlook_files\msg\*.msg" > "c:\outlook_files\content.txt"
您可以像这个例子一样使用添加内容:
add-content -path "c:\test.txt" -value "$value"
正如您在下面看到的,提取了文件夹中所有 .msg 文件的内容。但是,我只能在输出 content.txt 中看到 1 个 .msg 内容,而不是所有 .msg 文件。如何循环命令并添加到同一个 .txt 文件?
$output_file3 = ‘c:\outlook_files\content.txt’
# Search messages
Get-ChildItem "c:\outlook_files\msg\" -Filter *.msg | Foreach-Object {
# Read current message content
$content = Get-Content $_.FullName >$output_file3
}
不使用重定向,而是使用 Out-File -append
或 Add-Content
所以改变
$content = Get-Content $_.FullName >$output_file3
到
Get-Content $_.FullName | out-file $output_file3 -append
我放弃了变量赋值,因为它在这个上下文中没有做任何事情。
>
redirection operator 截断现有文件。要么使用追加操作:
Get-Content $_.FullName >>$output_file3
Get-Content $_.FullName | Add-Content $output_file3
Get-Content $_.FullName | Out-File $output_file3 -Append
或者在ForEach-Object
循环之后写操作:
ForEach-Object {
Get-Content $_.FullName
} >$output_file3
ForEach-Object {
Get-Content $_.FullName
} | Set-Content $output_file3
ForEach-Object {
Get-Content $_.FullName
} | Out-File $output_file3
通常您更喜欢 *-Content
或 Out-File
cmdlet 而不是重定向运算符,因为它们可以让您更好地控制写入文件的内容(即编码)。 Out-File
和 Set-Content
/Add-Content
之间的主要区别在于前者默认为 Unicode(准确地说是小端 UTF-16),而后者默认为 Ascii(实际上是 windows-1252ANSI 编码).
如果你不想白白循环,你可以简单地这样做
Get-Content "c:\outlook_files\msg\*.msg" | Out-File "c:\outlook_files\content.txt"
或
Get-Content "c:\outlook_files\msg\*.msg" > "c:\outlook_files\content.txt"
您可以像这个例子一样使用添加内容:
add-content -path "c:\test.txt" -value "$value"