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

时间:2013-05-28 20:18:15

标签: powershell powershell-v2.0

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

PS> gci *.rar

正如预期的那样,由于没有这样的文件,因此没有任何报告。但当我做"echo $?"时,它返回true。

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

2 个答案:

答案 0 :(得分: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返回0个将返回False的文件(可能等同于'if exists'),所以在第一个例子中我们使用 not 运算符(!)来基本上反转逻辑以返回True并执行代码块。在第二个例子中,我们正在寻找rar文件的存在,并希望代码块在找到任何文件时执行。

答案 1 :(得分:3)

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

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

使用PowerShell v3,它更容易一些:

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