0

我有两个非常相似的单行命令,但一个有效,一个不带变量。

Copy-Item "C:\BadSourceCodes\dropTest\base1\*" -Include "myUsers.Config","myUsers.WSF" -Destination "C:\BadSourceCodes\dropTest\temp1"

这很有效,我有两个文件,我希望将它们复制到目标文件夹。

如果我创造这样的东西

$files = "myUsers.Config,myUsers.WSF"

$tempFiles = [string]::Concat("`"",$files.Replace(",","`",`""),"`"")
$tempFiles
Copy-Item "C:\BadSourceCodes\dropTest\base1\*" -Include $tempFiles -Destination "C:\BadSourceCodes\dropTest\temp1" -Force

一旦我对包含文件使用变量,它就不起作用。我检查了不同的变体,但它不起作用。

$ 变量的行为是否不同?

我尝试了以下变体,例如 $($tempFiles)、'$tempFiles'、"$tempFiles".....

更新: 我认为当我转义引号并将 , 替换为 "," 时,它会将引号视为字符串的一部分。我采取了一些糟糕的方法。但是起作用的只是 $files.Split(",") 它创建了一个字符串数组并完成了。

4

1 回答 1

3

-Include参数需要一个字符串数组,而不是单个字符串中的名称列表。将名称放入实际数组中,它应该可以工作:

#create an array of strings
$files = "myUsers.Config","myUsers.WSF"

Copy-Item "C:\BadSourceCodes\dropTest\base1\*" -Include $files -Destination "C:\BadSourceCodes\dropTest\temp1" -Force
于 2012-10-19T21:46:35.653 回答