繁体   English   中英

根据条件声明检查文件夹中的文件是否已存在

[英]check if file in folder already exist based on conditional statment

我有两个文件夹

  • C:\\文件夹1
  • C:\\ Folder2

两个文件夹都包含带有不同编号文件名的* .txt文件(例如01.txt,02.txt ... 10.txt)

该脚本将比较两个文件夹中存在的文件。 然后仅将“文件夹2”中没有的文件从“文件夹1”复制到C:\\ TestFolder,反之亦然。

例如,如果:

  • Folder1包含一个名为10.txt的文件
  • Folder2包含多个文件02.txt,10.txt

然后02.txt将是唯一复制到C:\\ Testfolder的文件。

我将修改以下脚本以添加以下功能:

  • 如果Folder1中存在的文件较新,则Folder2中的“所有”文件:不执行任何操作。
  • 如果Folder1中的文件较新,则Folder2上的文件“某些”:将较新的文件复制到Folder3。

基本上,我需要检查Folder1中存在的文件是否已经存在于Folder2中。 还要验证此文件是否相同,或者Folder2中是否存在一个或多个文件。

Compare-Object $Folder1 $Folder2 -Property Name, Length , LastWriteTime | Where-Object {$_.SideIndicator -eq "<="} | ForEach-Object {
    Copy-Item "C:\Source\$($_.name)"  -Destination "C:\TestFolder" -Force -recurse -include "*.txt"
}
$folder1="c:\folder1"
$folder2="c:\folder2"
$dest="c:\testfolder"
$folder1Files=dir $folder1
$folder2Files=dir $folder2
$newestFileFolder2=$folder2Files | sort LastWriteTime | select -expand LastWriteTime -Last 1
$equalFiles=diff $folder1Files $folder2Files -Property Name,Length -ExcludeDifferent -IncludeEqual -PassThru | select Name,LastWriteTime,FullName
foreach ($file in $equalFiles){
    #If the file present in Folder1 is newer then "all" the files in Folder2: do nothing
    if ($file.LastWriteTime -lt $newestFileFolder2){
        #If the file in the Folder1 is newer then "some" of the file on the Folder2: copy the newer files to Folder3.
        if ((dir "$folder2\$($file.Name)").LastWriteTime -gt $file.LastWriteTime){
            copy "$folder2\$($file.Name)" $dest -Force -recurse -include "*.txt"
        }
        else{
            copy "$($file.FullName)" $dest -Force -recurse -include "*.txt" 
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM