使用powershell实现文件夹
2017-09-01阅读 4787
$ConfirmPreference="none"
$File=Import-Csv path.csv -Encoding Default
$LogFile="sync_log.csv"
$Table = @{"source"='';"destination"='';"datetime"='';"SHA_Resu1t"='';}
$Pstable =New-object -TypeName psobject -Prop $Table
$Pstable | select-Object source,destination,datetime,SHA_Resu1t | Export-csv $LogFile -Force -NoTypeInformation -Encoding UTF8
foreach ($item in $File)
{
$s=$item.source.ToString().tolower()+'\'
$d=$item.destination.ToString().tolower()+'\'
Get-ChildItem $item.source -Recurse | ForEach-Object -Process {
$Spath=$_.FullName.ToString().tolower()
$Dpath=$Spath.replace("$s","$d")
$datetime=get-date
If((Test-Path -Path $Dpath) -eq $true)
{
if(((Get-ChildItem $Dpath).psiscontainer) -eq $false)
{
if((Get-Item $Spath).LastWriteTimen -gt (Get-Item $Dpath).LastWriteTime)
{
Copy-Item "$Spath" -Destination "$Dpath" -Force
$OutInfo=$Spath.ToString()+','+$Dpath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
elseif ((Get-Item $Spath).LastWriteTimen -lt (Get-Item $Dpath).LastWriteTime)
{
Copy-Item "$Dpath" -Destination "$Spath" -Force
$OutInfo=$Dpath.ToString()+','+$Spath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
}
}
else
{
Copy-Item "$Spath" -Destination "$Dpath" -Force
$OutInfo=$Spath.ToString()+','+$Dpath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
}
Get-ChildItem $item.destination -Recurse | ForEach-Object -Process {
$RDpath=$_.FullName.ToString().tolower()
$RSpath=$RDpath.replace("$d","$s")
$datetime=get-date
If((Test-Path -Path $RSpath) -eq $false) #对比destination 中的对象是否在source中存在
{
Copy-Item "$RDpath" -Destination "$RSpath" -Force
$OutInfo=$RDpath.ToString()+','+$RSpath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
}
}
$File=Import-Csv path.csv -Encoding Default
$LogFile="sync_log.csv"
$Table = @{"source"='';"destination"='';"datetime"='';"SHA_Resu1t"='';}
$Pstable =New-object -TypeName psobject -Prop $Table
$Pstable | select-Object source,destination,datetime,SHA_Resu1t | Export-csv $LogFile -Force -NoTypeInformation -Encoding UTF8
foreach ($item in $File)
{
$s=$item.source.ToString().tolower()+'\'
$d=$item.destination.ToString().tolower()+'\'
Get-ChildItem $item.source -Recurse | ForEach-Object -Process {
$Spath=$_.FullName.ToString().tolower()
$Dpath=$Spath.replace("$s","$d")
$datetime=get-date
If((Test-Path -Path $Dpath) -eq $true)
{
if(((Get-ChildItem $Dpath).psiscontainer) -eq $false)
{
if((Get-Item $Spath).LastWriteTimen -gt (Get-Item $Dpath).LastWriteTime)
{
Copy-Item "$Spath" -Destination "$Dpath" -Force
$OutInfo=$Spath.ToString()+','+$Dpath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
elseif ((Get-Item $Spath).LastWriteTimen -lt (Get-Item $Dpath).LastWriteTime)
{
Copy-Item "$Dpath" -Destination "$Spath" -Force
$OutInfo=$Dpath.ToString()+','+$Spath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
}
}
else
{
Copy-Item "$Spath" -Destination "$Dpath" -Force
$OutInfo=$Spath.ToString()+','+$Dpath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
}
Get-ChildItem $item.destination -Recurse | ForEach-Object -Process {
$RDpath=$_.FullName.ToString().tolower()
$RSpath=$RDpath.replace("$d","$s")
$datetime=get-date
If((Test-Path -Path $RSpath) -eq $false) #对比destination 中的对象是否在source中存在
{
Copy-Item "$RDpath" -Destination "$RSpath" -Force
$OutInfo=$RDpath.ToString()+','+$RSpath.ToString()+','+$datetime.ToString()
$OutInfo
$WriteLog=Out-File -FilePath "$LogFile" -InputObject "$OutInfo" -Append -Encoding utf8
$WriteLog
}
}
}