Powershell 在文本文件中找到图像文件的路径,并将文件路径交给poshgram

Powershell 在文本文件中找到图像文件的路径,并将文件路径交给poshgram,powershell,telegram,Powershell,Telegram,背景:我正在使用文件和文件夹监视程序“DiskPulse”(Win 10)识别多个文件夹中的新图像文件(.png)。DiskPulse保存包含图像文件路径的新文本文件(C:\DiskPulse.txt),并调用powershell(ps)脚本将新文件发送到电报。我正在使用poshgram模块将新文件发送到telgram 问题1: 要发送新文件,首先需要从文件和文件夹wather DiskPulse(C:\DiskPulse.txt)存放的文本文件中识别其文件路径和名称。我只知道新图像文件的文件扩

背景:我正在使用文件和文件夹监视程序“DiskPulse”(Win 10)识别多个文件夹中的新图像文件(.png)。DiskPulse保存包含图像文件路径的新文本文件(
C:\DiskPulse.txt)
,并调用powershell(ps)脚本将新文件发送到电报。我正在使用poshgram模块将新文件发送到telgram

问题1:
要发送新文件,首先需要从文件和文件夹wather DiskPulse(
C:\DiskPulse.txt)
存放的文本文件中识别其文件路径和名称。我只知道新图像文件的文件扩展名(
*.png
)和文件路径的开头(
C:\*
)。此外,我不确定是否应该使用-SimpleMatch或-Pattern进行搜索。diskpulse.txt的内容如下所示:

“03-Oct-2020 11:38:04修改了29.54 KB管理员C:\local\files\snapshots\nameofimagefile.png”

问题2
标识的文件路径需要移交给poshgram($photo变量指定poshgram的文件路径)

这是我到目前为止提出的ps文件的代码:

Select-String -Path C:\diskpulse.txt -SimpleMatch "*.png"|select FileName

$token = 
$chat_id = 
$photo = here, the file path from the search should be inserted
Send-TelegramLocalPhoto -BotToken $token -ChatID $chat_id -PhotoPath $photo
非常感谢您的指点,我在这里正走在一条陡峭的学习道路上


道格发布的解决方案效果很好。此外,这是我在注释将我置于正确路径后发现的完整解决方案(从文本文件中选择文本“administrator”后的子字符串):


您可以使用带有适当正则表达式模式的select字符串来提取文件名

$photo = (Select-String -path 'c:\diskpulse.txt' -Pattern 'c:.+\.png' -AllMatches).matches.value

因为您知道它总是
C:\
,所以我们可以用
C:
匹配开始,用
.png
匹配课程结束<正则表达式中的code>将匹配任何字符,因此我们必须用
\
将其转义为“字面上的句点”

选择字符串的输出将是匹配对象。。。并且该对象上不会有
.Filename
属性。[grin]保存调用$Var的
S-S
结果,然后使用
$Var | Get Member
查看该$Var中的内容。我收到一条错误消息,在使用此代码时需要指定对象。如何正确指定对象?:$Var=Select String-Path C:\diskpulse.txt-SimpleMatch.png“*$Var | Get members所以文件只是以时间戳开始并以完整文件名结束的一行?文件或路径中是否有空格?您可以使用
$InString.Split(“”,7)
将字符串拆分为7部分。。。然后把最后一部分作为文件名。我没有让
$InString.split
工作,但是这段代码完成了我需要做的事情:
$token=“”$chat\u id=“”$photo=(选择字符串-路径C:\diskpulse.txt-模式“administrator(.*)。匹配。组[1].Value#如果应根据字符位置提取子字符串(“61”),请改为使用:#$photo=(获取内容-路径C:\diskpulse.txt)。子字符串(61)发送电报localphoto-BotToken$token-ChatID$chat\u id-PhotoPath$photo
感谢您为我设置了正确的路径!库尔!很高兴知道你能按需要工作。。。[咧嘴笑]
$photo = (Select-String -path 'c:\diskpulse.txt' -Pattern 'c:.+\.png' -AllMatches).matches.value