4

拡張子が「rar」のファイルが含まれていないフォルダーがあります。gci ( Get-ChildItemのエイリアス) を使用して、PowerShell コマンドラインから次のコマンドを実行します。

PS> gci *.rar

予想どおり、そのようなファイルが存在しないため、何も報告されません。しかし、 を実行する"echo $?"と、true が返されます。

特定のファイル拡張子のファイルが存在しないことをテストするにはどうすればよいですか? Windows 7 で PowerShell v2 を使用しています。

4

2 に答える 2

6
#If no rar files found...
if (!(gci c:\ *.rar)){
    "No rar files!"
}
#If rar files found...
if (gci c:\ *.rar){
    "Found rar file(s)!"
}

'if' は括弧内に指定された条件を評価し、ブール値 (True または False) を返します。条件が true を返す場合、中括弧内のコードが実行されます。この例では、gci が False を返すファイルを 0 個返した場合 (おそらく「存在する場合」と同等)、最初の例ではnot演算子 (!) を使用して論理を本質的に逆にし、True を返し、コード ブロックを実行します。2 番目の例では、rar ファイルの存在を探しており、見つかった場合はコード ブロックを実行します。

于 2013-05-28T20:43:38.187 に答える
3

gci は配列を返します。配列内の結果の数を確認できます。

if ((gci *.rar | measure-object).count -eq 0)
{
  "No rars"
}

PowerShell v3 を使用すると、少し簡単になります。

if ((gci *.rar).Count -eq 0)
{
  "No rars"
}
于 2013-05-28T20:25:48.827 に答える