我正在尝试创建一个将打开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"
}
我不确定为什么你使用单独的函数来确定.html文件的名称,但无论如何,如果你想根据另一个文件是否存在打开一个文件,它就像
if (Get-Item -ea SilentlyContinue <path of file to check for>) {
Invoke-Item <path of file to open>
}
(假设“open”表示与文件扩展名关联的默认操作 - 这是您在使用& "<path>"
时实际执行的操作。)
因此,更具体地说,根据您的代码:
if (Get-Item -ea SilentlyContinue "\\*****path to file\$Textbox1.html") {
Invoke-Item '\\*****path to file\HTA3.hta'
}
if (<boolean> -eq $true) { ...
与if (<boolean>) { ...
相同,同样if (<boolean> -ne $true) { ...
与if (! <boolean>) { ...
相同。所以,使用.NET类(你真的不需要)的if语句应该只是if ([IO.File]::Exists($filePath) { ...
。一个简单的方法,就是看看是否有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.
}