$lastExitCode 不适用于 7-Zip 更新
$lastExitCode not working for 7-Zip update
我想做的是备份一些数据库,部分过程是将它们压缩,这样它们不仅在一个文件中,而且在一个较小的文件中,所以我有以下代码。
# 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, etc
$blocation = 'c:\SQLBackups'
zlocation = 'c:\Program Files-Zipz.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
& zlocation d ABOCH2_SQL_backup.zip *.bak
& zlocation u ABOCH2_SQL_backup.zip *.bak
if($lastExitCode -eq 0) {
del /q *.bak
}
清空之前运行的 .zip 文件后,用新转储的数据库更新 .zip 文件,然后仅在成功更新 .zip 后删除数据库。我面临的问题是,在 运行 之后,.zip 文件将使用新数据库进行更新。但是,$lastExitCode
无法正常工作,因此成功添加到 .zip 的数据库永远不会被删除,我最终会积压旧数据库。
我是不是遗漏了什么,或者哪里出了问题?
我猜你的删除操作实际上是失败的。我会质疑这是如何被调用的,或者你可能正在抑制错误。执行时具有 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"
我想做的是备份一些数据库,部分过程是将它们压缩,这样它们不仅在一个文件中,而且在一个较小的文件中,所以我有以下代码。
# 0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, etc
$blocation = 'c:\SQLBackups'
zlocation = 'c:\Program Files-Zipz.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
& zlocation d ABOCH2_SQL_backup.zip *.bak
& zlocation u ABOCH2_SQL_backup.zip *.bak
if($lastExitCode -eq 0) {
del /q *.bak
}
清空之前运行的 .zip 文件后,用新转储的数据库更新 .zip 文件,然后仅在成功更新 .zip 后删除数据库。我面临的问题是,在 运行 之后,.zip 文件将使用新数据库进行更新。但是,$lastExitCode
无法正常工作,因此成功添加到 .zip 的数据库永远不会被删除,我最终会积压旧数据库。
我是不是遗漏了什么,或者哪里出了问题?
我猜你的删除操作实际上是失败的。我会质疑这是如何被调用的,或者你可能正在抑制错误。执行时具有 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"