PowerShell移动对象脚本任务

时间:2018-08-03 20:54:06

标签: windows powershell items

我想创建一个计划脚本,将所有文件夹的 .exe 项目移动到另一个目录。

这是我试图做的:

$folderItems = Get-ChildItem -Path C:\Users\Administrator\Downloads\Test | where {$_.Extension -eq ".exe"}

这是输出:

PS C:\Users\Administrator\Downloads> $folderItems

Directory: C:\Users\Administrator\Downloads\Test


Mode                LastWriteTime         Length Name                                                                
----                -------------         ------ ----                                                                
-a----         6/4/2018  10:42 PM       10563368 bsplayer272.setup.exe                                               
-a----        5/27/2018   9:46 PM         658488 setup.exe                                                           
-a----         6/4/2018   7:28 PM        2948240 uTorrent.exe   

但是当我尝试移动它们时:

$folderitems | % {
  Move-Item -Path C:\Users\Administrator\Downloads\Test\$_.name -Destination D:\Downloads\
}

这是我得到的错误:

  

移动项:找不到路径   'C:\ Users \ Administrator \ Downloads \ Test \ bsplayer272.setup.exe.name'   因为它不存在。

我在做什么错了?

谢谢

1 个答案:

答案 0 :(得分:0)

  • Move-Item接受管道输入,因此不需要ForEach-Object%
    也不是中间变量。
  • 如果将通配符附加到路径上,那么where也是多余的。

Get-ChildItem -Path C:\Users\Administrator\Downloads\Test\*.exe |
    Move-Item -Destination D:\Downloads\

如果您像@Theo的建议那样输入您自己的命令,或者

$folderitems | % {
  Move-Item -Path 'C:\Users\Administrator\Downloads\Test\'+$_.Name -Destination D:\Downloads\
}

$folderitems | % {
  $_ | Move-Item -Destination D:\Downloads\
}