PowerShell:移动子文件夹但忽略根文件的执行报错求助
解决PowerShell移动文件夹报错的问题
问题分析
你需要将W:\Main Folder 1\Subfolder 1下的Sub-Subfolder 1-3移动到上级目录W:\Main Folder 1,同时忽略该目录下的文件。之前的代码存在两个关键问题:
- 目标路径错误:
$destination = "W:\Main Folder\"遗漏了末尾的1,正确路径应为W:\Main Folder 1\ - 不必要的递归遍历:使用
-Recurse会遍历所有层级的子文件夹,可能导致尝试移动已存在的文件夹,触发"无法创建已存在的文件"错误
另外,-Force参数在Move-Item中的作用是允许覆盖文件或合并文件夹,但前提是路径正确且操作对象明确。
正确代码实现
$source = "W:\Main Folder 1\Subfolder 1\" $destination = "W:\Main Folder 1\" # 获取Subfolder 1下的直接子目录(不递归),自动排除文件 Get-ChildItem -Path $source -Directory | Move-Item -Destination $destination -Force -Verbose
代码说明
-Directory参数替代-attributes D,更直观地筛选文件夹- 移除
-Recurse,仅获取Subfolder 1下的直接子文件夹(即你需要的Sub-Subfolder 1-3) - 修正目标路径为正确的上级目录,确保移动方向准确
-Force参数会自动合并同名文件夹的内容(若目标目录已存在同名文件夹),无需提前删除原有文件夹
执行这段代码后,即可将指定的三个子文件夹移动到上级目录,同时自动忽略原目录下的文件。
内容的提问来源于stack exchange,提问作者tnpir4002
相关产品推荐
相关产品推荐

