最后一天修改过的压缩/压缩文件
问题描述:
我对Powershell和脚本非常陌生,如果有人能够提供帮助,我将非常感激。最后一天修改过的压缩/压缩文件
我正在尝试创建一个PowerShell脚本,它执行以下操作来备份设置数量的目录中每天的任何更改。
从最近24小时内从多个预设位置递归地查找任何新的/修改过的文件或目录。
压缩所有导致一个zip文件
- 条目,同时保持
我设法找到取得使用下面的脚本的第一位工作的文件夹结构:
Get-ChildItem $SRC | Where {$_.PsIsContainer} | foreach-object {
Get-ChildItem $_ -Recurse -ErrorAction SilentlyContinue |
Where {$_.LastWriteTime -gt (get-date).AddDays(-1).date} |
Select FullName, LastWriteTime, Mode | Sort LastWriteTime, Mode
} >> C:\temp\LastModified-$TimeStamp.log
我有另一个脚本拉链给定的目录,但我一直在努力使用上述脚本的结果robocopy文件到一个位置,然后我可以Zip或如果吨这里有一种方法可以创建一个zip文件,而不必先将文件复制到某处,而不会丢失每个文件的文件夹结构?
我有以下脚本可以Zip给定的目录(但我需要将多个目录压缩成一个zip文件,除非我先将文件robocopy在某处&如何让robocopy只复制上次修改过的文件24小时)
$Source = 'C:\Users\Downloads\RobocopyLocation\'
$Destination = 'D:\OneDrive\'
$TimeStamp = Get-Date -f yyyyMMdd_HHmmss
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip '
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::CreateFromDirectory($Source, $ZipName)
当我运行下面的脚本,我得到和错误信息抱怨路径参数为空。
$F1 = 'C:\Users\Downloads\Folder A'
$F2 = 'C:\Users\Downloads\Folder B'
$F3 = 'C:\Users\Downloads\Folder C'
$SrcFolders = ($F1, $F2, $F3);
$BackupDrive = "D:\OneDrive"
$DestFolders = ("$BackupDrive\Folder A", "$BackupDrive\Folder B", "$BackupDrive\Folder C");
$Destination = 'C:\Users\SysAdmin\Downloads\PLSWork\'
$TimeStamp = Get-Date -f yyyyMMdd_HHmmss
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip '
$Option = "{$_.PsIsContainer} | foreach-object { Get-ChildItem $_ -Recurse -ErrorAction SilentlyContinue | Where {$_.LastWriteTime -gt (get-date).AddDays(-1).date} | Select FullName, LastWriteTime, Mode | Sort LastWriteTime, Mode}"
Foreach ($SrcFolders in (Get-ChildItem $SrcFolders | where $Option)){
Add-Type -Assembly "System.IO.Compression.FileSystem" ;
[System.IO.Compression.ZipFile]::CreateFromDirectory($SrcFolders, $ZipName)
}
答
修改行
$ZipName = "$Destination\$TimeStamp" + '_Backup.zip '
与
$ZipName = "$Destination$TimeStamp" + '_Backup.zip '
答
怎么这样呢?
$RootPath = "P:\PSZip\"
$Folders = (
"Folder A",
"Folder B",
"Folder C"
)
$BackupFolder = "P:\PSZip\Destination\"
$Files = @()
foreach($Folder in $Folders) {
$Files = Get-ChildItem ("{0}{1}\" -f $RootPath, $Folder) | Where {$_.PSIsContainer} | ForEach-Object { Get-ChildItem $_.FullName -Recurse | Where { $_.LastWriteTime -gt (Get-Date).AddDays(-1) } }
$ZipName = ("{0}{1}\{2}_Backup.zip" -f $BackupFolder, $Folder, (Get-Date -f yyyyMMdd_HHmmss))
Compress-Archive -Path $Files.FullName -DestinationPath $ZipName
}
“我得到的和错误消息抱怨路径参数为空” – 4c74356b41
能否请您发布错误?我们需要弄清楚,PowerShell在抛出Null异常的地方。 –