gpt4 book ai didi

powershell - powershell-匹配意外结果

转载 作者:行者123 更新时间:2023-12-03 01:08:43 25 4
gpt4 key购买 nike

我已经编写了一个简单的PowerShell脚本,该脚本旨在采用文件名,然后将文件移动到特定文件夹中。

有问题的文件是作为PDF文档扫描的表单。

在文件名中,我定义了一个唯一的字符串,用于帮助识别文件的格式,然后我的脚本会将文件分类到正确的文件夹中。

我已将文件名捕获为字符串变量。

我正在使用-match来评估文件名字符串变量,而我的问题是match的行为就像...好似的。

例如,我的脚本在字符串中查找(F1),如果返回true,则我的脚本会将文件移动到名为IT Account Requests的文件夹中。

在我的脚本找到名称中带有(F10)的文件之前,这一切都很好,因为“match”将评估字符串并也找到F1的匹配项。

如何使用“匹配”为确切的字符串块返回true?

我知道这听起来像是一个非常基本的新手问题,但是如何使用-match来区分这两种文件类型?

我在网上搜寻了很多东西,以学习如何强制-match做我想做的事情,但是也许我需要在这里重新思考,并使用“match”以外的其他东西来获得所需的结果?

感谢您抽出宝贵时间阅读本文。

代码示例:

$Master_File_name = "Hardware Request (F10).pdf"

if ($Master_File_name -match "(F1)"){Write-Output "yes"}
if ($Master_File_name -match "(F10)"){Write-Output "yes"}

两个if语句均返回"is"

最佳答案

-match对您的字符串进行基于正则表达式的匹配,这意味着右侧参数是一个正则表达式模式,而不是文字字符串。

在正则表达式中,(F1)的意思是“匹配F和1,并将子字符串捕获为单独的组”。

要匹配文字字符串(F1),请手动转义模式:

if($Master_File_Name -match '\(F1\)'){Write-Output 'yes'}

或者使用 Regex.Escape()方法自动为您完成此操作:
if($Master_File_Name -match [regex]::Escape('(F1)')){Write-Output 'yes'}

关于powershell - powershell-匹配意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43229543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com