【发布时间】:2022-11-22 10:15:51
【问题描述】:
我有一个运行以下脚本的 powershell 脚本,它成功地将我的文件和文件夹从当前文件夹移动到目标文件夹。但是它显示错误“该进程无法访问该文件,因为它正被另一个进程使用”
我的脚本:
mkdir filestobehere
$dest = '.\filestobehere'
Move-Item .\* $dest -Exclude $dest -Force
I am stumped.
我试图尝试捕获,但它没有被捕获,我仍然收到错误。
mkdir filestobehere
Get-ChildItem -Path "./" |
ForEach-Object {
$dest = '.\filestobehere'
Try {
Move-Item .\* $dest -Exclude $dest -Force
}
Catch {
Write-Hose "File is in use"
}
}
【问题讨论】:
-
Move-Item:Exclude参数仅在命令包含某项内容时有效,例如
C:\Windows\*,其中通配符指定C:\Windows目录的内容。 -
@Theo 我想我可以使用 Exclude 因为我的源路径是 .* 也就是我当前目录的内容
-
不,您将 Exclude 设置为文字字符串
'.\filestobehere' -
@Theo 我将 ErrorAction Stop 附加到 Move-Item,它现在打印“文件正在使用”。但是,如果我写 'Write-Host "File $($_.FullName) is in use",我想知道为什么它不写文件名?
-
那是因为在你的 Catch 块中你没有显示真实的错误,只是您自己的文本
"File is in use".. 将其更改为$_.Exception.Message。您是否阅读了我关于-Exclude开关的第一条评论?它不适用于文件路径,仅适用于文件名..
标签: powershell file