Powershell 输出文件 csv 定界
Powershell out-file csv delimiting
我有一个使用 robocopy 列出文件的 powershell 命令。我正在尝试输出到 csv,但它不会根据需要分隔列。我得到两列,应该有 5 列。是否有 out-file
csv 的定界符参数?
这是当前代码:
robocopy .\Documents\ NULL /L /S /V /E /BYTES /FP /NC /NDL /XJ /TS /R:1 /W:2 | Out-File -Append -FilePath "c:\beehive_20150608.csv" -Encoding ASCII
我试过export-csv
,它只返回路径的字符串长度。
有什么建议吗?
我假设您需要列出某个文件夹下的所有文件。您可以使用 Get-ChildItem -Recurse
而不是 robocopy
,使用 Where-Object
仅过滤文件,然后使用 Select-Object
:
仅选择您想要的属性
Get-ChildItem .\Documents -Recurse | Where-Object {!$_.PsIsContainer}| Select-Object -property LastWriteTime,Length,FullName | Export-Csv aaa.csv
如果您需要使用 robocopy
,您可以尝试解析它的输出:
robocopy .\Documents\ NULL /L /S /V /E /BYTES /FP /NC /NDL /XJ /TS /R:1 /W:2 /njh /njs | Where-Object {$_ -match '^\s*([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.*?)\s*$'} | ForEach-Object { new-object PSObject -property @{Length=$matches[1];Date=$matches[2];Time=$matches[3];Name=$matches[4]}} | Export-Csv aaa.csv
它很丑陋,但应该可以满足您的需求。我在命令行中添加了 /njh
和 /njs
参数以抑制 robocopy
的页眉和页脚,Where-Object
删除不匹配(空)行和 ForEach-Object
使用 $Matches
创建具有命名属性的对象,该 -match
运算符在 Where-Object
.
中使用
我有一个使用 robocopy 列出文件的 powershell 命令。我正在尝试输出到 csv,但它不会根据需要分隔列。我得到两列,应该有 5 列。是否有 out-file
csv 的定界符参数?
这是当前代码:
robocopy .\Documents\ NULL /L /S /V /E /BYTES /FP /NC /NDL /XJ /TS /R:1 /W:2 | Out-File -Append -FilePath "c:\beehive_20150608.csv" -Encoding ASCII
我试过export-csv
,它只返回路径的字符串长度。
有什么建议吗?
我假设您需要列出某个文件夹下的所有文件。您可以使用 Get-ChildItem -Recurse
而不是 robocopy
,使用 Where-Object
仅过滤文件,然后使用 Select-Object
:
Get-ChildItem .\Documents -Recurse | Where-Object {!$_.PsIsContainer}| Select-Object -property LastWriteTime,Length,FullName | Export-Csv aaa.csv
如果您需要使用 robocopy
,您可以尝试解析它的输出:
robocopy .\Documents\ NULL /L /S /V /E /BYTES /FP /NC /NDL /XJ /TS /R:1 /W:2 /njh /njs | Where-Object {$_ -match '^\s*([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.*?)\s*$'} | ForEach-Object { new-object PSObject -property @{Length=$matches[1];Date=$matches[2];Time=$matches[3];Name=$matches[4]}} | Export-Csv aaa.csv
它很丑陋,但应该可以满足您的需求。我在命令行中添加了 /njh
和 /njs
参数以抑制 robocopy
的页眉和页脚,Where-Object
删除不匹配(空)行和 ForEach-Object
使用 $Matches
创建具有命名属性的对象,该 -match
运算符在 Where-Object
.