如何让 Powershell 输出与以下命令生成的文件相同的文件?
目录 /s /b /ad *.* > C:\files.txt
应该很容易吧?!!
编辑:我发现 ps 正在根据屏幕缓冲区宽度截断输出。用格式表修复它并用空格填充......尝试格式列表,你会得到属性标题......你明白了。
如何让 Powershell 输出与以下命令生成的文件相同的文件?
目录 /s /b /ad *.* > C:\files.txt
应该很容易吧?!!
编辑:我发现 ps 正在根据屏幕缓冲区宽度截断输出。用格式表修复它并用空格填充......尝试格式列表,你会得到属性标题......你明白了。
一定要准确吗?为什么?俗话说,如果你在 Powershell 中解析字符串,你可能做错了什么......无论如何......
1) 只需调用 cmd.exe。
PS> cmd /c "dir /s /b /a-d *.* > c:\files.txt"
2)我相信你可以从原生 Powershell 中得到相同的结果。但我不能负责用 NTFS 连接、隐藏文件等测试每个边缘情况。
PS> gci -r | ?{ !$_.psiscontainer } | %{ $_.fullname } | out-file c:\files.txt
我个人讨厌你不能使用“选择”来检索 FullName 属性而不会对下游 cmdlet 产生奇怪的副作用。如果 foreach 循环的无意义让您和我一样困扰,请使用PSCX的 Get-PropertyValue 或Josh Einstein的 Linq-Select 。
有很多方法可以将信息写入文件。一种是Set-Content,不存在宽度问题。此外,将 FileInfo 对象转换为字符串会产生 FullName。
dir * -r | ?{!$_.PSIsCcontainer} | Set-Content C:\files.txt
Out-File 出现问题的原因是所有 Out-* cmdlet 都使用自动格式化视图。这些视图是在考虑控制台的情况下创建的。