您好,我的一个目录中有大约 5000 个文本文件 (TXT)。文件以逗号分隔。我想做的是将日期格式(存储在每个文件的第一列中)从 M/d/yyyy 更改为 MM/dd/yyyy。这 5000 个文件中大约有 100 万行,所以我希望有一些有效的方法可以做到这一点。我读到过,对于处理如此大量的数据,StreamWriter 命令是一种可行的方法,但我不确定它是否可以用于我的情况。感谢您的任何建议。
我正在使用此脚本通过 StreamWriter 删除多个文本文件的第二行和最后一行。它非常快速和高效。我希望通过一些小修改,它可以用于更改第一列中的日期格式。我只有 2 周的 PS 使用经验,所以这对我来说是一个相当大的挑战。
dir *.txt | %{
$content = gc $_.FullName
$output = @($content | select -First 1 )
$output += $content[2..($content.count -2)]
$sw = New-Object System.IO.StreamWriter($_.FullName,$false)
$output | %{$sw.WriteLine($_)}
$sw.close()
}
答案1
您说您的文本文件是用逗号分隔的。好吧,您可以使用Import-Csv -Path C:\file.txt
。然后 PowerShell 将每一行变成一个对象。对象比文本更容易/更准确地操作。对象可能“更慢”,但即使对于便宜的笔记本电脑来说,5000 个文件/1M 行也不算什么。不确定 PS 如何处理文件的第一行和最后一行,因为我不知道格式。
转换日期很容易。如果我给出Get-Date
一个格式为 m/d/yyyy 的日期字符串,我会使用参数-UFormat
来按我想要的方式格式化日期。Get-Help Get-Date -Full
PS> Get-Date 2/8/2016 -UFormat "%m/%d/%Y"
02/08/2016