Powershell 打开HTA文件

Powershell 打开HTA文件,powershell,if-statement,hta,Powershell,If Statement,Hta,我正在尝试创建一个powershell脚本,该脚本将打开一个HTA文件,但前提是它可以看到同一文件夹中的HTML文件 我从stackoverflow的另一个问题中得到了下面的脚本,但似乎无法让它工作——有人能给我指出正确的方向吗 第一部分确定HTML文件的名称(称为Textbox1.HTML)。 下一部分将文件路径设置为\\network location\Textbox1.html。 最后一部分说,如果存在Textbox1.html,请打开\\networklocation\HTA3.hta

我正在尝试创建一个powershell脚本,该脚本将打开一个HTA文件,但前提是它可以看到同一文件夹中的HTML文件

我从stackoverflow的另一个问题中得到了下面的脚本,但似乎无法让它工作——有人能给我指出正确的方向吗

第一部分确定HTML文件的名称(称为
Textbox1.HTML
)。 下一部分将文件路径设置为
\\network location\Textbox1.html
。 最后一部分说,如果存在
Textbox1.html
,请打开
\\networklocation\HTA3.hta

function GetTextboxExists
{
  $TextboxExists = "$Textbox1.html"
  return $TextboxExists
}
$filename = TextboxExists
$filePath = "\\*****path to file" + $filename

if ([IO.File]::Exists($filePath) -ne $true)
{
  & "\\*****path to file\HTA3.hta"
}

一个简单的方法是查看是否有txt文件。我选择使用int,但布尔值也可以

$files

Get-Content c:\Users\Athomsfere\Desktop\ | ForEach-Object `
    {
        if ($_.Extension -eq ".txt")
        {
            $files++  #Could also do $files = true
        }
    }

    if ($files -gt 0) 
      {
        Write-Host "Open HTA"
        #Start HTA code here.
      }

一个简单的方法是查看是否有txt文件。我选择使用int,但布尔值也可以

$files

Get-Content c:\Users\Athomsfere\Desktop\ | ForEach-Object `
    {
        if ($_.Extension -eq ".txt")
        {
            $files++  #Could also do $files = true
        }
    }

    if ($files -gt 0) 
      {
        Write-Host "Open HTA"
        #Start HTA code here.
      }

我不知道为什么要使用单独的函数来确定.html文件的名称,但在任何情况下,如果要根据是否存在另一个文件打开一个文件,只需

if (Get-Item -ea SilentlyContinue <path of file to check for>) {
  Invoke-Item <path of file to open>
}
  • 您没有指定什么是$Textbox1以及它的定义方式,但我推断它包含.html文件的基本名称

  • 我引用了Invoke Item的path参数,因为您显示了.hta文件的静态路径;如果要使用任何变量来确定路径,请确保更改为双引号

  • -ne操作符的意思是“不相等”,因此,实际上,只有当.html文件不存在时,您才试图打开.hta文件。您拥有的代码虽然过于繁琐,但除此之外还能工作,因此这可能是它不适合您的原因

  • 另一个技巧是,您不需要测试布尔条件是否相等或不相等
    if(-eq$true){…
    if(){…
    相同,同样
    if(-ne$true){…
    if(!){…
    相同。因此,使用.NET类(您并不真正需要)的if语句应该是
    if([IO.File]::Exists($filePath){…


我不知道为什么要使用单独的函数来确定.html文件的名称,但无论如何,如果要根据是否存在另一个文件打开一个文件,只需

if (Get-Item -ea SilentlyContinue <path of file to check for>) {
  Invoke-Item <path of file to open>
}
  • 您没有指定什么是$Textbox1以及它的定义方式,但我推断它包含.html文件的基本名称

  • 我将path参数单引号引到Invoke Item,因为您显示了.hta文件的静态路径;如果您使用任何变量来确定路径,请确保更改为双引号

  • -ne操作符的意思是“不相等”,因此,实际上,只有在.html文件不存在的情况下,您才尝试打开.hta文件。您的代码虽然过于繁琐,但除此之外还能工作,因此这可能是它不适合您的原因

  • 另一个技巧是,您不需要测试布尔条件是否相等或不相等。
    if(-eq$true){…
    if(){…
    相同,同样地,
    if(-ne$true){…
    if(!){…
    相同。因此,您的if语句使用.NET类如果([IO.File]::Exists($filePath){…,那么(您实际上不需要)应该是


是否要打开HTA或html文件?并将HTA作为应用程序打开,而不是作为我假设的内容?是否要打开HTA或html文件?并将HTA作为应用程序打开,而不是作为我假设的内容打开?