我正在尝试从所有文件夹和子文件夹(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 ....因为它不存在。错误指向源不存在。 我究竟做错了什么? 是因为我只读取了源驱动器\文件夹吗?
由于
答案 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