2017-07-28 31 views
0

あるフォルダから別のフォルダに一連の条件を満たす名前のファイルをコピーしようとしています。 this answerから、私は-Includeステートメントがこれに使用できることを発見しました。方法 - 複数の条件で変数を使用する

私の問題は、複数の基準を含む可能性のある、ユーザー指定の(変数による)基準が必要なことです。つまり、私は次のことを試みます:

# THIS WORKS FINE 
$includeFiles = "*tests.jar" 
Copy-Item "from/path" "to/path" -Include $includeFiles 

# THIS RETURNS NOTHING 
$includeFiles = "*tests.jar, other.jar" 
Copy-Item "from/path" "to/path" -Include $includeFiles 

この問題を回避するにはどうすればよいですか?それはどういうわけか、変数を "destring"したり、別の構文などを使用することは可能ですか?

答えて

2
# THIS WORKS FINE 
$copyPattern = "*tests.jar", "other.jar" 
Copy-Item "from/path" "to/path" -Include $copyPattern 

点は-Includeの引数は、各文字列が含まれるようにパターン文字列の配列であることです。あなたが書いた方法では、ファイル名にカンマとスペースが必要です。あなたがそのようなファイルを持っていない限り、何も含まれません。

あなたはパターンがカンマを含まないことを肯定的であり、あなたではなく、単に単一の文字列を持っていたい場合、あなたはもちろんの配列に変換することができます:引数に異なる働きを解析すること

$copyPatterns = "*tests.jar, other.jar" -split ', ' 

注意次のコマンドも同様に動作します:

Copy-Item from/path to/path -Include *tests.jar,other.jar 
+0

偉大な答え!私のシナリオでは、入力変数は単一の文字列にする必要がありますが、使用する前にその文字列を分割することは素晴らしいです。ありがとう! –

関連する問題