我正在尝试做的是备份一些数据库,部分过程是将它们压缩起来,这样它们不仅在一个文件中,而且在一个较小的文件中,所以我有以下代码。
# 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, etc
$blocation = 'c:\SQLBackups'
$7zlocation = 'c:\Program Files\7-Zip\7z.exe'
$date = Get-Date
$daynum = [int]$date.DayOfWeek
$month = Get-Date -Format MM
$day = (Get-Date).AddDays(0).ToString('dd')
$sqlfile = "*_backup_" + $date.Year + "_" + $month + "_" + $day + "_*.bak"
cd $blocation
& $7zlocation d ABOCH2_SQL_backup.zip *.bak
& $7zlocation u ABOCH2_SQL_backup.zip *.bak
if($lastExitCode -eq 0) {
del /q *.bak
}
从以前的运行中清空.zip文件后,使用新转储的数据库更新.zip文件,然后仅在.zip成功更新后删除数据库。我面临的问题是,在运行此问题后,.zip文件将使用新数据库进行更新。但是,$lastExitCode
不起作用,因此成功添加到.zip的数据库永远不会被删除,最终会积累旧的数据库积压。
我错过了什么,或者出了什么问题?
答案 0 :(得分:2)
我猜你的删除操作实际上是失败的。我会质疑这是如何被调用的,或者你可能正在压制错误。执行时del /q *.bak
的行应该出现以下错误:
Remove-Item : A positional parameter cannot be found that accepts argument '*.bak'.
At line:1 char:1
+ del /q *.bak
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Remove-Item], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RemoveIt
emCommand
如果您运行命令Get-Alias del
,您会看到" del"是Remove-Item
cmdlet的别名。也许你的$lastexitcode
逻辑是合理的?我会选择使用PowerShell方式删除这些文件:
Remove-Item *.csv -Confirm:$false
或者如果你想要,你可以使用cmd
cmd.exe /c "del /q *.bak"