PowerShell 5 Copy-Item无法正常工作

时间:2017-11-15 19:18:46

标签: powershell copy-item

我正在尝试从所有文件夹和子文件夹(dirs。和subdirs)复制所有.pdf文件。

Folder1
  1.pdf
  2.pdf
Folder1\Foder2\3.pdf
Folder1\Folder2\4.pdf
Folder1\Foder2\Folder3\5.pdf
Folder1\Folder2\Folder3\6.pdf

首先我用了

 $source = "c:\Folder1\"
 $desti = "D:\foderA\"
 PS> Get-ChildItem -recurse $source -Filter "*.pdf"

它显示dir和sub dir中的所有文件,但是当我尝试使用copy-Item时,我收到错误。

 PS> Get-ChildItem -recurse $source -Filter "*.pdf" | % {Copy-Item $_    -destination $desti}

错误:Copy-Item:找不到路径'C:\ Folder1 \ Folder2 ....因为它不存在。错误指向源不存在。 我究竟做错了什么? 是因为我只读取了源驱动器\文件夹吗?

由于

3 个答案:

答案 0 :(得分:3)

您可以将Get-ChildItem的输出对象直接传送到Copy-Item(即,您不需要% [这是ForEach-Object的别名]) ; e.g:

Get-ChildItem -Recurse $source -Filter "*.pdf" -File | Copy-Item -Destination $desti

-File参数仅将搜索限制为文件。

答案 1 :(得分:0)

你差不多正确,$_只抓取文件名,所以你丢失了路径,它试图使用你运行脚本的路径。改用它来保持完整路径。

Get-ChildItem -Recurse $source -Filter "*.pdf" | % {Copy-Item $_.FullName -Destination $desti}

答案 2 :(得分:0)

cp -Recurse C:\path\to\search\*.pdf C:\path\to\output\copies