是否可以从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`""
答案 0 :(得分:0)
绝对! Powershell有一些不同的“呼叫”运算符。 https://ss64.com/ps/call.html
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"'
此表格应该有效。使用逗号时,powershell会将其解释为数组。将参数传递给外部可执行文件的最安全方法是使用stop-parser运算符(--%
)来避免powershell的解释,但请注意,这会退回到cmd解析器上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"