PowerShell:有没有办法搜索文件名中的特定单词,如果找到就打开文件?

rqqzpn5f  于 2022-12-29  发布在  Shell
关注(0)|答案(2)|浏览(132)

我还没能弄清楚如何在PowerShell中使这个听起来很简单的任务。
我正在尝试创建一个powershell变量,它只使用文件名的一部分来表示一个文件,因为文件名的其余部分会周期性地变化,这应该能更好地表达我的意图。

#Each day the number changes except for the Name part.
 Name1, Name2, Name3...

#Variable must be able to work regardless of the number it has since the Name part never changes.
 $Variable: Volume\Folder\Name(X).exe

如果我解释得不够清楚,我很抱歉。我会提供任何需要的补充信息。

ymdaylpp

ymdaylpp1#

嗯,对我来说,这似乎是两个不同的任务在手:
首先你的标题暗示你正在寻找一种方法来检查给定目录中文件的文件名,我假设并使用默认的文件处理程序运行该文件(同样,我只能推测)

# 1. task
$path="C:\myfolder\" 
$mySearchKey="taxes"
$myItmes=Get-ChildItem -Path $myPath  
foreach($item in $myItems){ 
   if($item.name -like "*$mySearchkey*"){
      $matchingPath=$path+$item.name
      Invoke-Item $matchingPath
   }
}

其次,在您的描述和代码示例中,这个问题似乎是围绕着这样一个想法发展的,即根据与开始日期相关的日期,为最有可能为我们之前打开的文件的文件名创建动态变量:

#2. task    
    $afileName="Marry"
    $startdate= Get-Date "2022-12-06"
    $todays= get-date
    $numberOfDays = New-TimeSpan -Start $startdate -End $todays
    $numberOfDays++ # since a differnce of 0 days means your in the 1. day
    $newPath="Volume\Folder\"+$afileName+$numberOfDays+".exe"

但我还得弄清楚你的最终目的。这两者是如何结合在一起的?

nbewdwxp

nbewdwxp2#

在要搜索位置运行脚本。

$all_files = ls
$filename = Read-Host "Enter File Name"
foreach ($item in $filename)
{
    if ($item -match $filename)
    {
        Get-Content $item
    }
}

相关问题