如何删除 Powershell 脚本本身正在使用的文件?
How to delete a file that is being used by the Powershell script itself?
我正在尝试遍历给定目录中的所有图片,检查它们的大小和尺寸。当某些 属性 不符合我的约束时,我想立即删除该文件。否则我想执行一些其他操作。
Add-Type -AssemblyName System.Drawing
$maxFileSizeKB = 100
$minPicWidth = 500
$minPicHeight = 500
foreach ($file in Get-ChildItem -Path ..\pics) {
$fname = $file.fullname
$fsizeKB = $file.length/1KB
$image = [System.Drawing.Image]::FromFile($file.FullName)
$iWidth = $image.width
$iHeight = $image.height
$fLastWrite = $file.LastWriteTime
if( $fsizeKB -gt $maxFileSizeKB -or
$iWidth -lt $minPicWidth -or
$iHeight -lt $minPicHeight) {
Write-Host "`tDoes'nt match criteria - deleting and continueing with next Image ..."
Remove-Item -Force $fname
continue
}
Write-Host "other action"
}
我希望在相应的输出中删除尺寸或尺寸太小的图片。如果一张图片符合所有要求,我想看到输出 "other action"
除删除外它都有效,这给了我这个错误:
Remove-Item : Das Element pics\tooSmall2.PNG kann nicht entfernt werden: Der
Prozess kann nicht auf die Datei "pics\tooSmall2.PNG" zugreifen, da sie von
einem anderen Prozess verwendet wird.
In PowerShell\ADPhotoHandler.ps1:27 Zeichen:9
+ Remove-Item -Force $fname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (\tooSmall2.PNG:FileInfo) [Remove-Item], IOException
+ FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
System.Drawing.Image.FromFile()
文档指出:
The file remains locked until the Image is disposed.
因此,请在尝试删除基础文件之前调用 $image.Dispose()
。
我正在尝试遍历给定目录中的所有图片,检查它们的大小和尺寸。当某些 属性 不符合我的约束时,我想立即删除该文件。否则我想执行一些其他操作。
Add-Type -AssemblyName System.Drawing
$maxFileSizeKB = 100
$minPicWidth = 500
$minPicHeight = 500
foreach ($file in Get-ChildItem -Path ..\pics) {
$fname = $file.fullname
$fsizeKB = $file.length/1KB
$image = [System.Drawing.Image]::FromFile($file.FullName)
$iWidth = $image.width
$iHeight = $image.height
$fLastWrite = $file.LastWriteTime
if( $fsizeKB -gt $maxFileSizeKB -or
$iWidth -lt $minPicWidth -or
$iHeight -lt $minPicHeight) {
Write-Host "`tDoes'nt match criteria - deleting and continueing with next Image ..."
Remove-Item -Force $fname
continue
}
Write-Host "other action"
}
我希望在相应的输出中删除尺寸或尺寸太小的图片。如果一张图片符合所有要求,我想看到输出 "other action"
除删除外它都有效,这给了我这个错误:
Remove-Item : Das Element pics\tooSmall2.PNG kann nicht entfernt werden: Der Prozess kann nicht auf die Datei "pics\tooSmall2.PNG" zugreifen, da sie von einem anderen Prozess verwendet wird. In PowerShell\ADPhotoHandler.ps1:27 Zeichen:9 + Remove-Item -Force $fname + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (\tooSmall2.PNG:FileInfo) [Remove-Item], IOException + FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand
System.Drawing.Image.FromFile()
文档指出:
The file remains locked until the Image is disposed.
因此,请在尝试删除基础文件之前调用 $image.Dispose()
。