我有一个维护不好的目录列表,这些目录应该有相同的子目录,但随着时间的推移,其中一些目录已经在错误的级别结束。
目录应该是结构化的:
Top Level
WrapperFolder
SubFolder1
Files
SubFolder2
Files
字符串
但我有这样的目录:
Top Level
SubFolder1
Files
WrapperFolder
SubFolder1
Files
型
我想从顶层移动SubFolder1,并将其与WrapperFolder中的SubFolder1合并
我试探着:
move-item -path "c:\TopLevel\SubFolder" -dest "C:\TopLevel\WrapperFolder\"
型
但是,当相同的目录名已经存在时,这会引发IOException。有没有一种方法可以合并这些目录,或者我需要递归地将文件移动到正确的文件夹并删除原始文件夹?
1条答案
按热度按时间4urapxun1#
如果你想像文件浏览器那样合并文件夹,你需要使用windows shell com对象。这个解决方案here基本上就是你需要的,除了我们使用
MoveHere
来移动目录,而不是使用CopyHere
函数。这个解决方案基于那个例子。字符串
我们传递
$sourceFolder
和16
,16
是对应于选项(reference)的标志值:对于显示的任何对话框,请回答“Yes to All”。
使用该选项,文件夹将被合并,任何同名的文件将被覆盖。如果您不想覆盖文件,还有其他选项,例如“8”:
如果具有目标名称的文件已经存在,则在移动、复制或重命名操作中为正在操作的文件提供给予新名称。