Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 按创建日期比较两个CSV文件,并使用Powershell将更改保存到另一个CSV中_File_Powershell_Csv_Comparison_Powershell 3.0 - Fatal编程技术网

File 按创建日期比较两个CSV文件,并使用Powershell将更改保存到另一个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 (

我在创建一个脚本时遇到了一些问题,该脚本通过创建时间比较两个CSV文件,并将结果保存为另一个CSV。我想比较最新的文件。所以,我有两个目录,一个是源目录,另一个是目标目录。如果源中的文件比目标文件新,脚本应该获取文件名,并将其复制到目标文件。这是我的密码-

$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,脚本是根据创建时间而不是日期和时间做出决定的。我将如何更改此项,以便将日期也考虑在内?谢谢