【发布时间】:2019-03-05 08:04:41
【问题描述】:
我对 PowerShell 比较陌生,我正在尝试编写一个 PowerShell 脚本来将 VBScript 中的一些语句转换为 Microsoft JScript。这是我的代码:
$vbs = 'C:\infile.vbs'
$js = 'C:\outfile.js'
(Get-Content $vbs | Set-Content $js)
(Get-Content $js) |
Foreach-Object { $_ -match "Sub " } | Foreach-Object { "$_()`n`{" } | Foreach-Object { $_ -replace "Sub", "function" } | Out-File $js
Foreach-Object { $_ -match "End Sub" } | Foreach-Object { $_ -replace "End Sub", "`}" } | Out-File $js
Foreach-Object { $_ -match "Function " } | Foreach-Object { "$_()`n`{" } | Foreach-Object { $_ -replace "Function", "function" } | Out-File $js
Foreach-Object { $_ -match "End Function" } | Foreach-Object { $_ -replace "End Function", "`}" } | Out-File $js
我想要让我的 PowerShell 程序从 VBScript 输入文件 infile.vbs 中获取代码,对其进行转换,然后将其输出到 JScript 输出文件 outfile.js。这是我想要它做的一个例子:
输入文件:
Sub HelloWorld
(Code Here)
End Sub
输出文件:
function HelloWorld()
{
(Code Here)
}
在函数方面也会发生类似的情况。从那里,我会手动调整代码以进行转换。当我在 PowerShell v5.1 中运行我的程序时,它没有显示任何错误。但是,当我打开outfile.js 时,我只看到一行:
False
真的,我有两个问题。
1。为什么会发生这种情况?
2。我怎样才能修复这个程序,让它按照我想要的方式运行(如上所述)?
谢谢,
加布
【问题讨论】:
标签: regex powershell replace io