0

非常によく似た1行のコマンドが2つありますが、1つは機能し、もう1つは変数を使用しません。

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

これはうまくいきます。2つのファイルがあり、それらを宛先フォルダーにコピーしたいと思います。

このようなものを作成すると

$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"....などのバリエーションを試してみました。

更新: 引用符をエスケープして、を「、」に置き換えると、引用符は文字列の一部として扱われると思います。それが私が取った悪いアプローチだった方法。しかし、機能したのは、文字列とDoneの配列を作成する$ 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 に答える