File 按创建日期比较两个CSV文件,并使用Powershell将更改保存到另一个CSV中
我在创建一个脚本时遇到了一些问题,该脚本通过创建时间比较两个CSV文件,并将结果保存为另一个CSV。我想比较最新的文件。所以,我有两个目录,一个是源目录,另一个是目标目录。如果源中的文件比目标文件新,脚本应该获取文件名,并将其复制到目标文件。这是我的密码-File 按创建日期比较两个CSV文件,并使用Powershell将更改保存到另一个CSV中,file,powershell,csv,comparison,powershell-3.0,File,Powershell,Csv,Comparison,Powershell 3.0,我在创建一个脚本时遇到了一些问题,该脚本通过创建时间比较两个CSV文件,并将结果保存为另一个CSV。我想比较最新的文件。所以,我有两个目录,一个是源目录,另一个是目标目录。如果源中的文件比目标文件新,脚本应该获取文件名,并将其复制到目标文件。这是我的密码- $source = import-csv -Path "c:\network.csv" $destination = import-csv -Path "c:\local.csv" $output = @() forEach (
$source = import-csv -Path "c:\network.csv"
$destination = import-csv -Path "c:\local.csv"
$output = @()
forEach ($Column in $source) {
$result = $destination | Where-Object {$Column.Name -eq $_.Name}
$CreationTime = if ($Column.CreationTime -lt $result.CreationTime)
{
write-host "Found Change"
write-host $Column.CreationTime
write-host $result.CreationTime
}
$output += New-object PSObject -property @{
FileName = $Column.Name
CreationTime = $Column.CreationTime
}
}
$output | select-object FileName, CreationTime | Export-Csv -Path C:\Changes.csv -NoTypeInformation
这段代码现在似乎将每个条目都标记为“foundchange”,我希望文本文件中不会有任何内容,因为目标文件夹中的所有文件都比源文件更新。有人帮忙吗?
谢谢。您在if语句之外向$output对象添加文件,所以所有内容都被添加了。这应该起作用:
$source = import-csv -Path "c:\network.csv"
$destination = import-csv -Path "c:\local.csv"
$output = @()
forEach ($row in $source) {
$result = $destination | Where-Object {$row.Name -eq $_.Name}
if ($row.CreationTime -lt $result.CreationTime) {
write-host "Found Change"
write-host $row.CreationTime
write-host $result.CreationTime
$output += New-object PSObject -property @{
FileName = $row.Name
CreationTime = $row.CreationTime
}
}
}
$output | select-object FileName, CreationTime | Export-Csv -Path C:\Changes.csv -NoTypeInformation
我还将$Column更改为$row,因为您正在对csv行而不是列进行迭代。您在if语句之外向$output对象添加文件,所以所有内容都被添加。这应该起作用:
$source = import-csv -Path "c:\network.csv"
$destination = import-csv -Path "c:\local.csv"
$output = @()
forEach ($row in $source) {
$result = $destination | Where-Object {$row.Name -eq $_.Name}
if ($row.CreationTime -lt $result.CreationTime) {
write-host "Found Change"
write-host $row.CreationTime
write-host $result.CreationTime
$output += New-object PSObject -property @{
FileName = $row.Name
CreationTime = $row.CreationTime
}
}
}
$output | select-object FileName, CreationTime | Export-Csv -Path C:\Changes.csv -NoTypeInformation
我还将$Column更改为$row,因为您正在对csv行而不是列进行迭代。您好,脚本是根据创建时间而不是日期和时间做出决定的。我将如何更改此项,以便将日期也考虑在内?ThanksHi,脚本是根据创建时间而不是日期和时间做出决定的。我将如何更改此项,以便将日期也考虑在内?谢谢