PowerShell запускает скрипт Ultraedit - PullRequest
0 голосов
/ 29 марта 2019

Можно ли запустить макрос или скрипт UltraEdit из PowerShell?Примерно так:

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 голосов
/ 29 марта 2019

Да, это возможно. Проблема с вашим текущим примером заключается в том, что вы окружаете правила цитирования аргументами:

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) в аргументах после стоп-анализатора, но вы все равно можете использовать переменные окружения, используя синтаксис пакета %VAR%.

В качестве передовой практики рекомендуется полностью определить ваш путь и использовать оператор вызова для ясности:

& C:\Temp\uedit64.exe
0 голосов
/ 03 апреля 2019

Спасибо всем, проблема была в Select-String , который разделял совпавшие строки, поэтому скрипт не выполнял никаких действий из-за неправильной структуры файла.

Эти два прекрасно работают: -)

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

2. Start-Process -FilePath $ultraEdit -ArgumentList "$logFile /S=$scriptFile"
0 голосов
/ 29 марта 2019

Абсолютно!У Powershell есть несколько разных операторов вызова.https://ss64.com/ps/call.html

Ознакомьтесь с документацией для Start-процесса.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`""

Должно работать на вас (измените путь, конечно.

...