PowerShell移动文件夹时排除指定目录报错问题咨询
问题分析与解决
你的脚本崩溃且试图移动ARKIV目录本身,核心问题是**-Exclude参数的用法错误**:
-Exclude参数接收的是子项的名称(文件名/文件夹名),而非完整路径。你传入的H:\FAKTURA\ARKIV\是完整路径,Get-ChildItem在H:\FAKTURA下查找子项时,子项名称是ARKIV,所以这个排除条件根本不生效,导致ARKIV被纳入了待移动列表。- 试图把ARKIV目录移动到它自己的子目录(
H:\FAKTURA\ARKIV\ARKIV),这在Windows系统里是不允许的,直接触发错误崩溃。
修正后的脚本
$sourceDir = "H:\FAKTURA" $destinationDir = "H:\FAKTURA\ARKIV" $excludeFolder = "ARKIV" if (Test-Path -Path $destinationDir) { # 只获取H:\FAKTURA下的一级文件夹,排除ARKIV,然后移动到目标目录 Get-ChildItem -Path $sourceDir -Directory -Exclude $excludeFolder | Move-Item -Destination $destinationDir -WhatIf }
关键改动说明
- 把
-Exclude的值改成文件夹名ARKIV,而非完整路径,确保排除条件生效。 - 添加
-Directory参数,只处理文件夹(如果你的需求是只移动文件夹的话,避免误动文件)。 - 统一使用变量存储路径,提升脚本可读性和维护性。
执行修正后的脚本,加上-WhatIf验证时,就只会看到除ARKIV外的其他文件夹被标记为待移动,去掉-WhatIf即可执行实际移动操作。
内容的提问来源于stack exchange,提问作者Henrik Rosqvist
相关产品推荐
相关产品推荐

