我正在尝试自动化一个简单的桌面清除程序,并且尝试编写一个命令来还原程序执行的所有操作。当前,我的程序将桌面上的所有内容分类到一个名为“ media”的文件夹(位于桌面上)中,该文件夹包含每个类别的项目的进一步子目录。本质上,
Desktop >> Media >> {bunch of dirs for item categories}
因此,我正在尝试编写一条命令,该命令将从子目录中提取所有已排序的项目,然后将它们转储回桌面,而不移动文件夹本身。到目前为止,我已经尝试过:
dir -attributes !directory -recurse | foreach-object {move-item $_ -destination "$home/desktop"}
这会产生Powershell尝试移动其ACTUAL路径类似于以下内容的对象的问题:
C:\________\desktop\media\images\sample.jpg
使用此路径:
C:\________\desktop\media\sample.jpg
因为我正在执行“ media”文件夹中的命令,导致出现如下错误:
move-item : Cannot find path 'C:\Users\bhiggins\desktop\media\Basic Engineering Circuit Analy - J. David
Irwin.pdf' because it does not exist.
At line:1 char:55
+ ... -recurse | foreach-object {move-item $_ -destination "$home/desktop"}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\bhiggi...David Irwin.pdf:String) [Move-Item], ItemNotFou
ndException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.MoveItemCommand
那么我将如何修改命令,以便将正确的路径传递给move-item指令,同时又将执行位置保持为“ media”?
答案 0 :(得分:0)
希望我在这里了解您的问题。 您确实不需要 foreach-Object 来执行此操作。 这将占用源文件夹中的所有内容,并将其移动到目标文件夹(在您的情况下为桌面)
Get-ChildItem -Path $path -recurse | Move-Item -Destination $destination