我是从Powershell开始的,到目前为止似乎很有趣。今晚,我将编写一个用7z压缩文件夹并将加密添加到新的.7z文件的脚本(见下文)。
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
$timestamp = get-date -f yyyyMMdd
$Source = "D:\dbbackup\$timestamp-0300"
$Target = "D:\backup\$timestamp.7z"
sz a -mx=9 $Target $Source -p1234最终,我需要从一个文件夹中创建一个加密的7z文件,该文件夹每天晚上都在使用yyyyMMdd进行更改,然后再加上一个常量(在本例中,是yyyMMd-0300)。使用上面的脚本,我可以运行它,并将创建一个新的7z文件。然而,密码1234将不适用。根本没有加密。
如果我省略了$timestamp,并且只使用$source和$target运行7z,我可以成功地创建一个加密的7z文件。
有人能告诉我我做错了什么吗?
发布于 2015-08-14 06:01:28
我会尝试以下几种方法
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
$sz = ("$env:ProgramFiles\7-Zip\7z.exe")
$timestamp = get-date -f yyyyMMdd
$Source = "D:\dbbackup\$timestamp-0300"
$Target = "D:\backup\$timestamp.7z"
Start-Process $sz -argumentList "a", "-mx=9", "$Target", "$Source", "-p1234" -Wait发布于 2018-03-05 17:18:52
仅仅因为我需要花费一些时间来传递具有类似空格的目录,从而解决了这个问题,下面是如何加密.bak文件并将加密的存档发送到共享位置的示例:
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
$timestamp = get-date -f yyyy-MM-dd
$Source = "C:\backups ang logs\*.bak"
$Target = "\\192.168.12.345\d\DropBoxFolder\My Daily Backups $timestamp.7z"
sz a -mx=0 -pStrongPassword -mhe=on -m0=lzma2 $Target $Source | Out-Nullm0=lzma2是压缩算法(请参阅更多)
-mx=0 for LZMA2意味着64 be字典、32个快速字节、HC4匹配器和BCJ过滤器--我在这里使用过它,因为大多数原生.bak文件已经被压缩了。
mhe=on启用头加密(这里更多的7z方法)
Out-Null增强输出,而不是将其发送到管道下或显示它(更多的这里)
https://stackoverflow.com/questions/32000819
复制相似问题