【问题标题】:Match strings stored in variables using PowerShell使用 PowerShell 匹配存储在变量中的字符串
【发布时间】:2019-05-23 14:26:17
【问题描述】:

我正在尝试创建一个备份脚本,该脚本将移动 30 天以前的文件,但我希望能够从列表中排除文件夹

$a = "C:\\Temp\\Exclude\\test"
$b = "C:\\Temp\\Exclude"

如果我运行以下命令:

$a -match $b

关注PowerShell Basics: Conditional Operators -Match -Like -Contains & -In -NotIn

$Guy ="Guy Thomas 1949"
$Guy -match "Th"

这将返回true

【问题讨论】:

    标签: powershell string-comparison


    【解决方案1】:

    我会说使用通配符之类的运算符,它可以为您节省很多头痛:

    $a -like "$b*"
    

    匹配运算符使用正则表达式模式并且路径中包含正则表达式特殊字符(转义字符)。如果您仍想使用 -match - 请确保转义字符串:

    $a -match [regex]::escape($b)
    

    这会起作用,但请记住它可以在字符串的中间进行匹配,您可以添加“^”锚来告诉正则表达式引擎从字符串的开头匹配:

    $a -match ("^"+[regex]::escape($b))
    

    【讨论】:

    • 第二个和第三个工作只要我做了 $a[0] -match [regex]::escape($b[0]) 现在解析为 true $a[0] -match $b[0] 这对我来说毫无意义,当我检查属性时,他们都说 system.string....谢谢
    • 您正在索引字符串并从每个变量 ('C') 中取回第一个字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2019-03-09
    • 2018-12-26
    • 2021-06-11
    • 2021-11-27
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多