PowerShell运行Ultraedit脚本

时间:2019-03-29 13:14:45

标签: powershell ultraedit

是否可以从PowerShell运行UltraEdit宏或脚本?如下所示:

uedit64.exe c:\temp\test.txt /s,e="c:\temp\script.js"

我没什么特别的。我只想用 UltraEdit 打开日志文件,一旦打开日志文件,就应该在该文件上执行UltraEdit脚本。以下代码打开日志文件,但不会在该文件上执行脚本。

$ultraEdit = "C:\...\UltraEdit\uedit64.exe"
$logFile = "C:\...\res.log"
$scriptFile = "C:\...\ultraEditScript.js"

Start-Process -FilePath $ultraEdit -ArgumentList "$logFile /s=`"$scriptFile`""

3 个答案:

答案 0 :(得分:0)

绝对! Powershell有一些不同的“呼叫”运算符。 https://ss64.com/ps/call.html

查看启动过程的文档。 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-6

Start-Process -FilePath "c:\pathtoexe\uedit64.exe" -ArgumentList "c:\temp\test.txt /s,e=`"c:\temp\script.js`""

应该为您工作(更改路径。

答案 1 :(得分:0)

是的,有可能。您当前示例的问题在于带有参数的引号规则:

uedit64.exe c:\temp\test.txt '/s,e="c:\temp\script.js"'

此表格应该有效。使用逗号时,会将其解释为数组。将参数传递给外部可执行文件的最安全方法是使用stop-parser运算符(--%)来避免的解释,但请注意,这会退回到解析器上Windows:

#requires -Version 3
uedit64.exe --% C:\Temp\test.txt /s,e="C:\Temp\script.js"

解析器的不同之处在于,您不能在停止解析器之后的参数中扩展变量(如果需要$path\script.js),但是仍然可以使用批处理语法{{1 }}。

作为一种最佳实践,建议完全限定您的路径并使用call运算符以使其清晰:

%VAR%

答案 2 :(得分:0)

谢谢大家, 问题在于选择字符串会分割匹配的行,因此,由于文件结构不正确,脚本没有执行任何操作。

这两个效果很好:-)

1. & $ultraEdit /fni $logFile /S=$scriptFile

2. Start-Process -FilePath $ultraEdit -ArgumentList "$logFile /S=$scriptFile"