powershell - 如何根据上次修改日期将文件复制到网络驱动器?
问题描述
我们的 Git 存储库爆炸了,我们最终丢失了存储库,所以现在我们所有的用户代码都只在本地工作站上。对于临时存储,我们将让他们所有人都将他们的本地存储库放在网络共享上。我目前正在尝试编写一个 PowerShell 脚本,以允许用户使用 GridView 选择所有存储库,然后将它们复制到网络共享。这会导致很多重叠,所以我只希望具有最新修改日期(提交)的文件在它们是重复文件时被覆盖。
例如,
用户 1 有 repo\file.txt 最后修改 8/10 并将其上传到网络共享。
用户 2 也有 repo\file.txt 最后修改 8/12。当用户 2 复制到共享时,它应该覆盖用户 1 文件,因为它是较新的文件。
我是 PowerShell 的新手,所以我不确定该采取哪个方向。截至目前,我想出了如何复制所有文件,但无法弄清楚最后修改的部分。任何帮助将不胜感激。
$destination = '\\remote\IT\server'
$filesToMove = get-childitem -Recurse | Out-GridView -OutputMode Multiple
$filesToMove | % { copy-item $_.FullName $destination -Recurse }
解决方案
这是我在这里的第一篇文章,所以请原谅。我正在浏览 reddit/stackoverflow 寻找案例来练习我的 PowerShell 技能。我尝试在本地家用 PC 上创建您要求的脚本,如果这对您有帮助,请告诉我:
$selectedFiles = get-childitem -Path "C:\Users\steven\Desktop" -Recurse | Out-GridView -OutputMode Multiple
$destPath = "D:\"
foreach ($selectedFile in $selectedFiles) {
$destFileCheck = $destPath + $selectedFile
if (Test-Path -Path $destFileCheck) {
$destFileCheck = Get-ChildItem -Path $destFileCheck
if ((Get-Date $selectedFile.LastWriteTime) -gt (Get-Date $destFileCheck.LastWriteTime)) {
Copy-Item -Path $selectedFile.FullName -Destination $destFileCheck.FullName
}
else {
Write-Host "Source file is older than destination file, skipping copy."
}
}
}
推荐阅读
- ios - 在 TableView 之间切换
- java - 只有偶数和只有奇数的字符串
- listview - 是否可以在 CustomScrollView 中使用 ListView.builder?
- php - 根据已选择的电子邮件在 Outlook 中发送电子邮件
- php - Windows 上的 Docker:如何运行多个网站(LAMP 堆栈)?
- python - Discord.py 删除消息并允许特定消息
- r - 在R中的传单地图区域内绘制圆圈(圆圈包装)
- python - 无法通过cmd升级pip
- mysql - 相同的查询但 ORDER BY 产生不同的结果
- android - 如何覆盖两个不同颜色的绘制矩形