打开HTA文件

时间:2013-09-12 02:18:21

标签: powershell if-statement hta

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

我有关于stackoverflow的另一个问题的以下脚本,但似乎无法让它工作 - 有人可以指出我正确的方向吗?

第一部分确定HTML文件的名称(称为Textbox1.html)。 下一部分将文件路径设置为\\network location\Textbox1.html。 然后最后一部分说明如果Textbox1.html存在,请打开\\network location\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"
}

2 个答案:

答案 0 :(得分:1)

我不确定为什么你使用单独的函数来确定.html文件的名称,但无论如何,如果你想根据是否存在另一个文件打开一个文件,它就像< / p>

if (Get-Item -ea SilentlyContinue <path of file to check for>) {
  Invoke-Item <path of file to open>
}

(假设“打开”是指与文件扩展名相关联的默认操作 - 这是您在使用& "<path>"时实际执行的操作。)

所以,更具体地说是代码:

if (Get-Item -ea SilentlyContinue "\\*****path to file\$Textbox1.html") {
    Invoke-Item '\\*****path to file\HTA3.hta'
}
  • 您没有指定 $ Textbox1 是什么以及它是如何定义的,但我推断它包含.html文件的基本名称。

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

  • -ne 运算符表示“相等”,所以实际上只有在.html文件<时才会尝试打开.hta文件em>不存在。你拥有的代码虽然过于繁琐,但除此之外还有其他功能,所以这可能是它不适合你的原因。

  • 另一个提示是,您不需要为相等或不等式测试布尔条件。 if (<boolean> -eq $true) { ...if (<boolean>) { ...相同,同样if (<boolean> -ne $true) { ...if (! <boolean>) { ...相同。因此,使用.NET类(您不需要)的 if 语句应该只是if ([IO.File]::Exists($filePath) { ...

答案 1 :(得分:0)

一种简单的方法,就是查看是否有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.
      }