我有一个可用的脚本,它将 sql bak 文件 7zips 压缩到网络位置(这里得到了好心人的帮助:))。由于 7zip 没有恢复记录,所以我想使用 par2。现在,我编写了一个脚本,但它不起作用(我并不感到惊讶,因为我真的不知道 powershell)。
脚本:
$path = "\\server\BACKUP\temp"
$dest = $path
$mask = "*.zip"
$files = dir $path -Include $mask
foreach ($file in $files)
{
C:\PAR\par2.exe c -r10 -n1 -m1024 "$dest\($file.basename).par2" $file
}
我认为我离答案不远了,但我还没找到解决办法 :(
提前谢谢。
答案1
我不知道 par2.exe 是如何工作的,所以我假设您插入 par2.exe 的所有参数都是有效的。我用“#”注释掉了最后一行,这应该是执行命令。请先运行脚本以验证打印输出是否正是您需要运行的内容,然后从最后一行中删除开头的“#”以执行命令。
$path = "\\server\BACKUP\temp"
$dest = $path
$mask = "*.zip"
$files = get-childitem $path | where-object {$_.name -like $mask}
$PARCMD = "C:\PAR\par2.exe"
foreach ($file in $files)
{
$arg = $dest + "\" + $file.name + ".par2"
$PARArgs = @("c","-r10","-n1","-m1024",$arg,$file)
write-host $PARCMD $PARArgs
#& $PARCMD $PARArgs
}
我正在使用 powershell 4.0 但我确实认为它应该与 2.0/3.0 兼容,如果您遇到任何错误,请在此处发布,我会提供帮助。