使用Powershell检查文件内容是否存在

时间:2018-09-20 21:11:59

标签: powershell

如果我的问题不清楚或格式不正确,请提前采取策略。这是我第一次在这里发布。

我有一个简单的powerhshell脚本,可以将文件从一个文件夹复制到另一个文件夹(如果目标文件夹中尚不存在该文件)。但是,我当前的问题是,尽管文件具有不同的名称,但它们可以具有完全相同的内容。我希望脚本能够判断目标文件夹中是否已存在文件内容,如果存在,则不执行任何操作。如果目标中尚不存在文件内容,则它将复制文件。任何帮助表示赞赏。

$date = get-date
$path = "path1"
$destination = "path2" 
Foreach($file in (Get-ChildItem $path)) {
If($file.LastWriteTime -gt $date.date) 
{ 
    #Test to see if the file already exists in the destination.
    if (!(Test-path (join-path $destination $file.name)))
    {
       Copy-Item -Path $file.fullname -Destination $destination
    }
}

}

1 个答案:

答案 0 :(得分:0)

我将不得不与Kory Gill发表的内容保持联系。

使用get-filehash来测试文件的哈希值,以查看它们是否匹配..即使它们的文件名不同。它对内容进行哈希处理。请记住,任何差异都会创建不同的哈希。一个文件而不是另一个文件中的任何空格或字符都会产生完全不同的哈希。但是,如果您要查找完全匹配的内容,则效果最好。由于sha1和md5或声明为不安全(可能发生冲突),因此请使用-算法sha256,尽管除非您真的尝试,否则Sha1在今天可能很难保持冲突。

if((Get-FileHash -Path <file1> -Algorithm SHA256).Hash -ne (Get-FileHash -Path <file1> -Algorithm SHA256).Hash)
{
    "Copy the file"
}