我有以下文件:
> dir ~
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 26-Oct-18 5:30 PM 2 xxx1
-a---- 26-Oct-18 5:30 PM 2 xxx2
-a---- 26-Oct-18 5:30 PM 2 xxx3
-a---- 26-Oct-18 5:31 PM 2 yyy1
-a---- 26-Oct-18 5:31 PM 2 yyy2
-a---- 26-Oct-18 5:31 PM 2 yyy3
-a---- 26-Oct-18 5:33 PM 2 zzz
我想将 xxx * 和 yyy * 文件移动到另一个文件夹。所以我这样做:
Move-Item -Path ~\* -Include "xxx*", "yyy*" -Destination D:\temp
并得到一个错误:
Move-Item : Cannot move item because the item at '~\zzz' does not exist.
但是文件在那里,并且 Test-Path〜\ zzz 返回 true 。
是 Move-Item cmdlet中的错误还是预期的行为? 如果可以预期,我为什么要得到它?
答案 0 :(得分:0)
您不需要-Include
。像这样传递通配符参数
$tmp = "D:\temp"
Move-Item "yyy*", "xxx*" -Destination "$tmp"
上面的示例假定您的PowerShell在放置“ xxx”和“ yyy”文件的目录中-否则,您需要在通配符前面编写路径
答案 1 :(得分:0)
是的,这有点令人困惑,但是如果您阅读了整个帮助文本,您要尝试执行的操作,则Move-Item在管道中由Get-ChildItem开头,是的,它确实显示了-include,但是在管道的Get-ChildItem一侧(左侧)。
因此,作为最佳实践,Razorfen所说的只是询问您需要/想要的东西。始终,在进行此类破坏性工作之前,请进行非破坏性/无影响的完整性检查(即,帮助文件文本中显示的Get-ChildItem),以确保您获得了期望的结果。
以这种方式传递列表的事实,即使您仅使用扩展名也是如此,也会发生相同的错误。
Move-Item -Path 'D:\FileSource\*' -Include '*.txt' -Destination 'D:\FileDestination' -Verbose -WhatIf
# Results
What if: Performing the operation "Move File" on target "Item: D:\FileSource\DataSet.txt Destination: D:\FileDestination\DataSet.txt".
What if: Performing the operation "Move File" on target "Item: D:\FileSource\input.txt Destination: D:\FileDestination\input.txt".
Move-Item : Cannot move item because the item at 'D:\FileSource\processesoutput.csv' does not exist.
At line:1 char:1
+ Move-Item -Path 'D:\FileSource\*' -Include '*.txt' -Destination 'D:\F ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand
因此,完全可以满足工作要求。
Get-ChildItem -Path 'D:\FileSource\*' | Move-Item -Include '*.txt' -Destination 'D:\FileDestination' -Verbose -WhatIf
What if: Performing the operation "Move File" on target "Item: D:\FileSource\DataSet.txt Destination: D:\FileDestination\DataSet.txt".
What if: Performing the operation "Move File" on target "Item: D:\FileSource\input.txt Destination: D:\FileDestination\input.txt".
What if: Performing the operation "Move File" on target "Item: D:\FileSource\processesoutput.csv Destination: D:\FileDestination\processesoutput.csv".
答案 2 :(得分:0)