Powershell 通过排除移动文件夹

问题描述 投票:0回答:1

我有很多文件夹,其中的内容我想移动到另一个文件夹 下面我想将 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
}

powershell except
1个回答
0
投票

我使用排除标志的方式是否错误?

是的:

  • -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
值。)

© www.soinside.com 2019 - 2024. All rights reserved.