powershell附加到输出
我正在“教自己学习powershell”,而且已经有了很大的进步,而google/这个网站并没有让我找到解决方案。我正在编译一个包含来自不同目录的文件列表的文本文件,但在向文件中显示新数据时遇到问题powershell附加到输出,powershell,append,Powershell,Append,我正在“教自己学习powershell”,而且已经有了很大的进步,而google/这个网站并没有让我找到解决方案。我正在编译一个包含来自不同目录的文件列表的文本文件,但在向文件中显示新数据时遇到问题 get-childitem $dir -recurse | % {write-output $_.fullname} >$file Get-ChildItem $dir -recurse | Select-object -ExpandProperty Fullname | Out-File
get-childitem $dir -recurse | % {write-output $_.fullname} >$file
Get-ChildItem $dir -recurse | Select-object -ExpandProperty Fullname | Out-File -FilePath $file
Get-ChildItem $dir2 -recurse | Select-object -ExpandProperty Fullname | Out-File -FilePath $file -Append
创建我的文件,但我想从下面添加新记录
get-childitem $dir2 -recurse | % {write-output $_.fullname} >$file
我尝试了添加内容和-append,但我不知道我没有做什么来正确操作。您可以使用写入文件,添加append参数将附加到文件
get-childitem $dir -recurse | % {write-output $_.fullname} >$file
Get-ChildItem $dir -recurse | Select-object -ExpandProperty Fullname | Out-File -FilePath $file
Get-ChildItem $dir2 -recurse | Select-object -ExpandProperty Fullname | Out-File -FilePath $file -Append
您可以使用写入文件,添加append参数将追加到文件中
get-childitem $dir -recurse | % {write-output $_.fullname} >$file
Get-ChildItem $dir -recurse | Select-object -ExpandProperty Fullname | Out-File -FilePath $file
Get-ChildItem $dir2 -recurse | Select-object -ExpandProperty Fullname | Out-File -FilePath $file -Append
尝试:
(已测试和工作)
双>
使其始终附加,每次覆盖一个
。
或者更改语法以使用 (未经测试) 在这种情况下,变量
$file
必须包含完整路径。比如:C:\directory\filename.txt
试试:
(已测试和工作)
双>
使其始终附加,每次覆盖一个
。
或者更改语法以使用 (未经测试) 在这种情况下,变量
$file
必须包含完整路径。例如:C:\directory\filename.txt
简短回答
此处使用的管道可以省去,使用管道将使生活更轻松:
Out-File (Get-ChildItem $dir -Recurse).FullName -FilePath $File
要追加,只需使用-append
标志:
Out-File (Get-ChildItem $dir2 -Recurse).FullName -FilePath $File -Append
注意:这仅适用于PowerShell v3及以上版本,因为PowerShell v2依赖管道来扩展数组中对象的属性。在这种情况下,最好的方法是在同一个线程上使用类似于proposed的东西
长答案和最佳实践
在另一个线程中,他们在附加文件时遇到了类似的困难。不过,他们也在以一种不必要的方式使用管道(比您在示例中使用的方式要多)
它们的管道使用情况如下所示:
$PathArray | % {$_} | Out-File "C:\SearchString\Output.txt"
现在,Out文件
又有了一个-Append
参数。简单地修改他们的代码,让它在最后被标记,就能解决问题
尽管如此,它们的ForEach Object
语句(%
符号)在管道中非常无用,也不需要(与您的使用方式非常相似)。这是因为您只使用ForEach对象
循环来输出对象,而不进行任何修改。这正是管道默认执行的操作,即将每个对象传递给下一个命令
有关管道的更多信息:
如果已在本地运行,则可以使用本地运行获取有关管道的帮助
以查看信息
与此相反:
$PathArray | % {$_} | Out-File "C:\SearchString\Output.txt" -Append
我们可以这样做:
$PathArray | Out-File "C:\SearchString\Output.txt" -Append
[推荐]该示例还可以同时消除对管道的需求,因为如果不使用管道,则使用管道的效率较低。在没有管道的情况下,或者在管道中每个管道的左侧,可以执行的所有操作都是“过滤左侧”(有关为什么要过滤左侧的详细信息,请参阅以下文章,格式为右侧:):
注意:在上述情况下,仅当文件已存在且正在扩展时,才需要使用-Append
请记住:获取帮助
,并阅读友好手册(RTFM)
最简单的故障排除方法是签出帮助文档。使用Get Help
检查您需要的任何内容:参数集、可用参数、示例等。确保运行Update Help
,以便在本地提供详细的文档。要签出所有内容,请执行以下操作:
Update-Help
Get-Help Out-File -Full
有关数据流/输出重定向的详细信息,请参见:
- PowerShell重定向操作符,例如
和
(还可以使用>
和n>
重定向数据流),以及每个PowerShell版本的可用流:(或:n>&1
的帮助)获取有关PowerShell中的\u重定向
- cmdlet),一个cmdlet,它充当
的更健壮版本(或:powerShell中的输出文件
)获取帮助对象
Out-File (Get-ChildItem $dir -Recurse).FullName -FilePath $File
要追加,只需使用-append
标志:
Out-File (Get-ChildItem $dir2 -Recurse).FullName -FilePath $File -Append
注意:这仅适用于PowerShell v3及以上版本,因为PowerShell v2依赖管道来扩展数组中对象的属性。在这种情况下,最好的方法是在同一个线程上使用类似于proposed的东西
长答案和最佳实践
在另一个线程中,他们在附加文件时遇到了类似的困难。不过,他们也在以一种不必要的方式使用管道(比您在示例中使用的方式要多)
它们的管道使用情况如下所示:
$PathArray | % {$_} | Out-File "C:\SearchString\Output.txt"
现在,Out文件
又有了一个-Append
参数。简单地修改他们的代码,让它在最后被标记,就能解决问题
尽管如此,它们的ForEach Object
语句(%
符号)在管道中非常无用,也不需要(与您的使用方式非常相似)。这是因为您只使用ForEach对象
循环来输出对象,而不进行任何修改。这正是管道默认执行的操作,即将每个对象传递给下一个命令
有关管道的更多信息:
如果已在本地运行,则可以使用本地运行获取有关管道的帮助
以查看信息
与此相反:
$PathArray | % {$_} | Out-File "C:\SearchString\Output.txt" -Append
我们可以这样做:
$PathArray | Out-File "C:\SearchString\Output.txt" -Append
[推荐]该示例还可以同时消除对管道的需求,因为如果不使用管道,则使用管道的效率较低。在没有管道的情况下尽一切可能,