PowerShell 脚本不会在不同的计算机上压缩
PowerShell script not zipping on different computer
我有以下用于压缩旧文件的脚本:
# Zipping old files and sending them to a file on desktop if older than 60 days
Function Zip {
Param(
[Parameter(Mandatory)]
[string]$zipFile
,
[Parameter(Mandatory)]
[String[]]$toBeZipped
)
$null = & "C:\Program Files-Zipz.exe" A -tzip $zipFile $toBeZipped
}
$Days = 60
$LastWrite = (Get-Date).Date.AddDays(-$Days)
$TargetFolder = "D:\Testing\*"
$Files = Get-Childitem $TargetFolder -Recurse |
Where-Object { $_.LastWriteTime -le $LastWrite } |
Select-Object -ExpandProperty Fullname
Zip "$($ENV:USERPROFILE)\Desktop\TEST.zip" $Files
我在一台虚拟机和一台物理机上测试时工作。
但是,当我在另一台计算机上尝试时,它失败了。
这是我得到的:
Program '7z.exe' failed to run: The filename or extension is too long
At C:\Users\Admin\Documents\zip help.ps1:23 char:9
+ $null = & "C:\Program Files-Zipz.exe" A -tzip $zipFile $toBeZippe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At C:\Users\Admin\Documents\zip help.ps1:23 char:1
+ $null = & "C:\Program Files-Zipz.exe" A -tzip $zipFile $toBeZippe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedEx
ception
+ FullyQualifiedErrorId : NativeCommandFailed
脚本无法使用 7-zip。其他计算机在完全相同的文件路径中有 7-Zip,所以我不确定我的问题是什么。任何输入将不胜感激。
编辑:我可以确认错误是因为文件路径太长。在路径较短的文件上尝试了我的脚本,它工作得很好。
我能够弄清楚是什么原因造成的。该文件夹中包含许多其他文件夹。 -Recurse
使脚本在每个文件夹中查找,从而导致此问题。我所要做的就是调整脚本以删除 -Recurse
并且它起作用了。
我有以下用于压缩旧文件的脚本:
# Zipping old files and sending them to a file on desktop if older than 60 days
Function Zip {
Param(
[Parameter(Mandatory)]
[string]$zipFile
,
[Parameter(Mandatory)]
[String[]]$toBeZipped
)
$null = & "C:\Program Files-Zipz.exe" A -tzip $zipFile $toBeZipped
}
$Days = 60
$LastWrite = (Get-Date).Date.AddDays(-$Days)
$TargetFolder = "D:\Testing\*"
$Files = Get-Childitem $TargetFolder -Recurse |
Where-Object { $_.LastWriteTime -le $LastWrite } |
Select-Object -ExpandProperty Fullname
Zip "$($ENV:USERPROFILE)\Desktop\TEST.zip" $Files
我在一台虚拟机和一台物理机上测试时工作。 但是,当我在另一台计算机上尝试时,它失败了。 这是我得到的:
Program '7z.exe' failed to run: The filename or extension is too long
At C:\Users\Admin\Documents\zip help.ps1:23 char:9
+ $null = & "C:\Program Files-Zipz.exe" A -tzip $zipFile $toBeZippe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At C:\Users\Admin\Documents\zip help.ps1:23 char:1
+ $null = & "C:\Program Files-Zipz.exe" A -tzip $zipFile $toBeZippe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedEx
ception
+ FullyQualifiedErrorId : NativeCommandFailed
脚本无法使用 7-zip。其他计算机在完全相同的文件路径中有 7-Zip,所以我不确定我的问题是什么。任何输入将不胜感激。
编辑:我可以确认错误是因为文件路径太长。在路径较短的文件上尝试了我的脚本,它工作得很好。
我能够弄清楚是什么原因造成的。该文件夹中包含许多其他文件夹。 -Recurse
使脚本在每个文件夹中查找,从而导致此问题。我所要做的就是调整脚本以删除 -Recurse
并且它起作用了。