gpt4 book ai didi

regex - 在 PowerShell 中查找和替换字符串的问题

转载 作者:行者123 更新时间:2023-12-02 23:53:23 25 4
gpt4 key购买 nike

我是 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.我怎样才能修复这个程序,让它按照我想要的方式运行(如上所述)?
谢谢,
加布

最佳答案

您也可以使用 switch 执行此操作陈述。像这样:

$vbs = 'C:\infile.vbs'
$js = 'C:\outfile.js'

Get-Content $vbs | ForEach-Object {
switch -Regex ($_) {
'Sub '{
'function {0}(){1}{2}' -f $_.Remove($_.IndexOf('Sub '),4).Trim(),[Environment]::NewLine,'{'
}
'End Sub'{
'}'
}
'Function ' {
'function {0}(){1}{2}' -f $_.Remove($_.IndexOf('Function '),9).Trim(),[Environment]::NewLine,'{'
}
'End Function' {
'}'
}
default {
$_
}
}
} | Out-File $js

关于regex - 在 PowerShell 中查找和替换字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52570328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com