我有很多文件夹,其中的内容我想移动到另一个文件夹 下面我想将 3 个文件夹移动到 ARKIV 文件夹 - 它可以工作,但脚本最后会崩溃。我是否以错误的方式使用排除标志?如果我使用 -Whatif 它似乎也想移动该文件夹 - 请参阅图 2
我的代码如下:
$current_logfiles = "H:\FAKTURA\"
$destination = "H:\FAKTURA\ARKIV\"
$excludes = "H:\FAKTURA\ARKIV\"
if ((Test-Path -Path $destination))
{
Get-ChildItem -Exclude $excludes -Path H:\FAKTURA | Move-Item -Destination
H:\FAKTURA\ARKIV -Whatif
}
我使用排除标志的方式是否错误?
是的:
-Exclude
(如-Include
)仅对项目(文件或目录)名称进行操作,而不是整个路径。
-Excludes
仅排除匹配项本身。这意味着当使用 -Recurse
并且排除 directory 时,其 contents (子树)是 not。
在您的情况下,由于您没有使用
-Recurse
,因此仅针对输入目录的直接子项,解决方案是仅使用名称,即$excludes = 'ARKIV'
:
$excludes = 'ARKIV'
Get-ChildItem -Exclude $excludes -LiteralPath H:\FAKTURA |
Move-Item -Destination H:\FAKTURA\ARKIV -Whatif
(代码可以简化:您可以使用
$destination
和 -Destination
和 (Split-Path -Leaf $destination)
作为 $excludes
值。)