我已经搜索过了,我已经尝试过了。我知道我不是很擅长使用powershell,但我开始认为这是不可能的。
我要做的是移动X天以前的C:\ Data的所有内容并将其存档。
听起来很简单..但是如果 C:\ data \ Subject包含从2015年到Current的文件。我只想归档X天以前的文件。所以新的归档路径将是C:\ DataBackup,并且在那里它将包含C:\ data的所有文件夹,但它们中的唯一文件将是X天旧..
这就是我用来复制和存档文件夹/文件的内容但它没有考虑到年龄..如果它确实如此,我会删除它从C:数据移动的文件,因为它们现在已经备份在C:\ dataBackup
中$sourcePath = "C:\Data"
$path = "C:\DataBackup"
$source = Get-ChildItem -Path $sourcePath -Directory
Add-Type -assembly "system.io.compression.filesystem"
Foreach ($s in $source)
{
$destination = Join-path -path $path -ChildPath "$($s.name).zip"
If(Test-path $destination) {Remove-item $destination}
[io.compression.zipfile]::CreateFromDirectory($s.fullname, $destination)}
答案 0 :(得分:2)
您可以像这样修改脚本:
$sourcePath = "C:\Users\kim_p\Downloads"
$path = "C:\DataBackup"
$tempPath = "C:\DataTemp"
# Any file younger than $limit will be excluded from the zip archive
$limit = (Get-Date).AddDays(-10)
$source = Get-ChildItem -Path $sourcePath -Directory
# Make sure the temporary folder doesn't exist
If(Test-path $tempPath) {Remove-item $tempPath -Recurse}
Add-Type -assembly "system.io.compression.filesystem"
Foreach ($s in $source)
{
$destination = Join-path -path $path -ChildPath "$($s.name).zip"
If(Test-path $destination) {Remove-item $destination}
# Create the temporary directory
New-Item $tempPath -Type Directory
# Copy files older than the date set in $limit to the temporary folder $tempPath
Get-ChildItem -Path $s.fullname -Recurse -Force | Where-Object { $_.CreationTime -lt $limit } | Copy-Item -Destination $tempPath
# Create the zip archive using the files copied to $tempPath
[io.compression.zipfile]::CreateFromDirectory($tempPath, $destination)
# Remove the temporary folder and all the files inside of it
Remove-item $tempPath -Recurse
# Remove the source files added to the archive
Get-ChildItem -Path $s.fullname -Recurse -Force | Where-Object { $_.CreationTime -lt $limit } | Remove-Item -Recurse -Force
}
我添加了一个名为$tempPath
的文件夹,其中包含将由CreateFromDirectory
添加到存档中的文件。超过某个定义限制$limit
的文件首先被复制到临时文件夹$tempPath
,然后以CreateFromDirectory
为参数执行$tempPath
。
最后删除$tempPath
,因为不再需要它。
请注意,在对任何重要文件运行此操作之前,请执行一些简单的测试。在脚本的最后,它将删除它之前存档的文件。
在我自己的测试中,它似乎正在工作,但我建议您也验证这一点。
答案 1 :(得分:1)
如果您使用PowerShell v5.0或更高版本,请尝试以下操作:
[
{"date":"2010-03-01","USDCAD": 1.31},
{"date":"2010-03-02","USDCAD": 1.32},
{"date":"2010-03-03","USDCAD": 1.33},
]