我对PowerShell比较陌生,我试图使用如下格式的文本文件来复制文件:
file1.pdf
dir1\dir2\dir3\dir 4
file2.pdf
dir1\dir5\dir7\di r8
file3.pdf
...etc.
每个条目的第一行是文件名,第二行是C:\ Users的文件路径。例如,文件中第一个条目的完整路径为:
C:\Users\dir1\dir2\dir3\dir 4\file1.pdf
以下代码是我目前的代码,但我收到的错误是:'不支持给定路径的格式。'和之后的另一个错误,告诉我它找不到路径,我假设第一个错误的结果。我已经玩过一些了,我得到的印象是它将字符串传递给Copy-Item。
$file = Get-Content C:\Users\AJ\Desktop\gdocs.txt
for ($i = 0; $i -le $file.length - 1; $i+=3)
{
$copyCommand = "C:\Users\" + $file[$i+1] + "\" + $file[$i]
$copyCommand = $copyCommand + " C:\Users\AJ\Desktop\gdocs\"
$copyCommand
Copy-Item $copyCommand
}
答案 0 :(得分:5)
您可以以三行的形式读取文件,连接前两个元素以形成路径并使用copy-item复制文件。
$to = "C:\Users\AJ\Desktop\gdocs\"
Get-Content C:\Users\AJ\Desktop\gdocs.txt -ReadCount 3 | foreach-object{
$from = "C:\Users\" + (join-path $_[1] $_[0] )
Copy-Item -Path $from -Destination $to
}
答案 1 :(得分:1)
试试这个(在循环内):
$from = "C:\Users\" + $file[$i+1] + "\" + $file[$i]
$to = "C:\Users\AJ\Desktop\gdocs\"
Copy-Item $from $to
$from
和$to
是Copy-Item
cmdlet的参数。它们绑定到参数 -Path 和 -Destinattion 。您可以通过以下代码进行检查:
Trace-Command -pshost -name parameterbinding {
Copy-Item $from $to
}