使用PowerShell确定具有特定文件扩展名的文件是否不在文件夹中

使用PowerShell确定具有特定文件扩展名的文件是否不在文件夹中,powershell,powershell-2.0,Powershell,Powershell 2.0,我有一个文件夹,其中不包含任何扩展名为“rar”的文件。我使用gci(别名)从PowerShell命令行运行以下命令: 正如预期的那样,由于不存在这样的文件,因此不会报告任何内容。但是当我执行一个“echo$?”时,它返回true 如何测试给定文件扩展名的文件是否不存在?我正在Windows7上使用PowerShell v2。gci返回一个数组。您可以检查数组中有多少个结果 if ((gci *.rar | measure-object).count -eq 0) { "No rars" }

我有一个文件夹,其中不包含任何扩展名为“rar”的文件。我使用gci(别名)从PowerShell命令行运行以下命令:

正如预期的那样,由于不存在这样的文件,因此不会报告任何内容。但是当我执行一个
“echo$?”
时,它返回true


如何测试给定文件扩展名的文件是否不存在?我正在Windows7上使用PowerShell v2。

gci返回一个数组。您可以检查数组中有多少个结果

if ((gci *.rar | measure-object).count -eq 0)
{
  "No rars"
}
有了PowerShell v3,就更容易了:

if ((gci *.rar).Count -eq 0)
{
  "No rars"
}

“if”计算括号之间指定的条件,返回布尔值(True或False),如果条件返回True,则执行大括号之间的代码。在本例中,如果gci返回0个将返回False的文件(可能相当于“if exists”),那么在第一个示例中,我们使用not运算符(!)从本质上反转逻辑以返回True并执行代码块。在第二个示例中,我们正在查找rar文件的存在,并希望代码块在找到任何文件时执行。

+1是的,这是有效的。不知道测量对象,谢谢。+1这是有效的。您能否解释if语句如何从gci cmdlet获取结果?谢谢。@Lars谢谢,就像你的回答一样,还有很好的附加信息-很惊讶V3语法在V2中是不允许的!
if ((gci *.rar).Count -eq 0)
{
  "No rars"
}
#If no rar files found...
if (!(gci c:\ *.rar)){
    "No rar files!"
}
#If rar files found...
if (gci c:\ *.rar){
    "Found rar file(s)!"
}