我在使用PowerShell输出一个txt文件时遇到了一个小问题,该文件包含目录中的文件名列表,每行的开头都附加了word file (file dave.acc)。当我在提示符(foreach ($i in Get-ChildItem .*.aac) {echo "file '$i'" | Out-File -encoding ascii mylist.txt}
中使用这一行时,我在运行后的新文本文件中只有一个条目(似乎只是dir中的最后一个条目)。dir中有5个文件,我的新txt文件的预期输出应该是file
file dave.mp3
file steve.mp3
等等,任何帮助都会很好。
问题是,对于与过滤器对应的每个文件,您都要覆盖"mylist.txt"
试题:
foreach ($i in Get-ChildItem .*.aac) {
Add-Content .mylist.txt "file $i"
}
Add-Content将为Get-ChildItem输出中的每个文件追加新的内容。:)
编辑:
同样,你不应该使用"echo"它是"write - output"的别名。如果你不想使用"Add-Content"你可以这样做:
foreach ($i in Get-ChildItem .*.aac) {
Write-Output "file $i" | Out-File -encoding ascii -Append .mylist.txt
}
但是正如你所看到的,写起来很长。:)
"Add-Content"基本上就是做ascii编码和"追加"*
*编辑:这对PS 5.1是正确的,但不适用PS 7,默认编码为UTF-8,正如@zett42在评论中提到的。