【问题标题】:Determine if files with a certain file extension are not in the folder using PowerShell使用 PowerShell 确定具有特定文件扩展名的文件是否不在文件夹中
【发布时间】:2013-05-28 20:18:14
【问题描述】:

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

PS> gci *.rar

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

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

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:
    #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 这行得通。你能解释一下 if 语句是如何从 gci cmdlet 获取结果的吗?谢谢。
    • @Lars 谢谢,也喜欢你的回答,很好的附加信息 - 很惊讶 V3 语法在 V2 中是不行的!
    【解决方案2】:

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

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

    使用 PowerShell v3 会更容易一些:

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

    【讨论】:

    • +1 是的,这行得通。不知道测量对象,谢谢。
    猜你喜欢
    • 2013-01-13
    • 2011-03-10
    • 2015-03-22
    • 1970-01-01
    • 2021-10-08
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多