Описание команды


scrpt

Запуск скриптов.

scrpt=FileScript, ||Parameters, ||&&wait, ||workdir<>, ||[tc], ||<info>, ||<xinfo>, ||Dialogs, ||param<>, , ||std<>, ||encd<>, ||stdcnv<>, ||redir<>

Параметры:

1-й обязательный параметр.
FileScriptПуть. FileScript - полный путь к файлу скрипта (AU3, A3X, VBS, JS, HTA, PS1, AHK, BAT, CMD).
Можно указывать только имя скрипта, если он находится в папке ...\Files\Scripts\ или путь относительно папки Scripts.
Дополнительные параметры:
ParametersПараметры. Может быть передано сколько угодно параметров. Разделитель между параметрами ||.
&&waitОжидает завершения работы скрипта.
workdir<>Рабочий каталог. Параметр workdir<Path>, где Path - путь к рабочему каталогу, возможны варианты:
  • Прямой путь C:\Test
  • Относительный путь %WINDIR%
  • Сокращённый путь $f... см. Дополнение №8
  • Путь переданный через глобальные переменные GLOBALNAME<> см. Дополнение №23.
  • макросы Autoit, связанные с путями @SystemDir.
Для ряда приложений необходимо обязательно прописывать путь каталога.
[tc]Расширенный аналог параметров Total Commander. см. Дополнение №12.
<info>Получение различной информации. см. Дополнение №10.
<xinfo>Получение различной информации. см. Дополнение №10.
  Аналог параметра <info>, имеет возможность внутри параметра использовать параметр <info>
  Пример: <xinfo=o450<info=f50FilePath//>//>
DialogsДиалоги. см. Дополнение №18
  Описание
Различные параметры диалогов.
  [input] - диалог ввода информации в InputBox.
  [richinput] - диалог ввода информации в RichInputBox.
  [combo] - диалог выбора информации в ComboBox.
  [group] - диалог выбора информации в GroupBox.
  [check] - диалог выбора информации в CheckBox.
  [edits] - диалог выбора информации в EditBox.
  [sfold] - выбор каталога.
  [zfold] - выбор каталогов.
  [sopen] - выбор файла для открытия.
  [ssave] - выбор файла для сохранения.
  [sicon] - диалог просмотра и выбора значка.
  [msgbx] - окно сообщения MsgBox.
  [updwn] - диалог выбора числовой информации UpDown.
  [image] - диалог выбора изображения.
  [elect] - диалог выбора файлов и папок.
...и другие диалоги.
param<>Строка параметров. В некоторых случаях для передачи параметров скрипту необходимы специфические нюансы, при таковых параметры можно прописывать в param<String>, где String - строка параметров, передаваемая "как есть" скрипту.
Дополнительные параметры:
std<>Чтение данных из потока. (для скриптов, которые направляют вывод данных в потоки STDOUT и STDERR).
Параметр std<Flag>, где Flag (флаги могут суммироваться):
  2 - предоставить указатель дочернего потока STDOUT.
  4 - предоставить указатель дочернего потока STDERR.
  6 ( в некоторых случаях 8) - предоставить указатель STDOUT и STDERR.
Информация записывается в глобальные переменные GLOBALSCRPT и GLOBALSCRPT1.
encd<>Преобразование данных. Параметр encd<Number>, позволяет преобразовывать данные STDOUT и STDERR потоков, где Number:
  0 - не преобразовывать - передать "как есть".
  1 - преобразовывать: попытаться определить кодировку во избежание "кракозябр" (по умолчанию).
  2 - преобразовывать OEM в ANSI.
stdcnv<>Преобразование данных потока. Параметр stdcnv<SeriesParam> позволяет преобразовать данные потока STDOUT и STDERR, где SeriesParam - серия параметров для преобразования. см. Дополнение №24 (Разделитель между параметрами ;; ).
redir<>Редирект потока. Параметр redir<Number>, позволяет в 64-битных системах перенаправить запуск WOW64, где Number:
  0 - не перенаправлять (по умолчанию).
  1 - перенаправлять (актуально для некоторых системных программ или скриптов (к примеру, defrag.exe или script.ps1).
  2 - принудительно отключить перенаправление в 64-битных системах.

Примечания:

• Информация созданная обработкой команд утилиты может передаваться в параметры скрипта:
  - через параметры утилиты (во 2-й части дополнительных параметров они перечислены)
  - через глобальные переменные других команд см. Дополнение №23
• При передаче списков (в виде временных файлов) обязательно используется параметр &&wait

Пример получения параметров скриптом vbs:

With WScript Cnt = .Arguments.Count
  If Cnt > 0 Then
    Parameter1 = .Arguments(0)
    MsgBox "Переменная Parameter1 =" & vbNewLine & "<" & Parameter1 & ">"
  End If
  If
Cnt > 1 Then
    Parameter2 = .Arguments(1)
    MsgBox "Переменная Parameter2 =" & vbNewLine & "<" & Parameter2 & ">"
  End If
  If
Cnt > 2 Then
    Parameter3 = .Arguments(2)
    MsgBox "Переменная Parameter3 =" & vbNewLine & "<" & Parameter3 & ">"
  End If
End With



• Для вызова скриптов au3 в них НЕ должно быть ссылок на Include функции.
• Для того, чтобы внести такие функции в скрипт:
    1. можно воспользоваться обфускатором с параметром /SO
    2. создать в папке утилиты папку Include и положить в неё файл с нужными функциями.
    3. скопировать папку Include из Autoit в папку TCIMG
    подробности см. Дополнение №39

Пример получения параметров Autoit скриптом au3:

If $CmdLine[0]>1 Then
  $Parameter1 = $CmdLine[1]
  MsgBox(4096, "Переменная ", "$Parameter1 =>" & $Parameter1 & "<=")
EndIf
If
$CmdLine[0]>2 Then
  $Parameter2 = $CmdLine[2]
  MsgBox(4097, "Переменная ", "$Parameter2 =>" & $Parameter2 & "<=")
EndIf
If
$CmdLine[0]>3 Then
  $Parameter3 = $CmdLine[3]
  MsgBox(4098, "Переменная ", "$Parameter3 =>" & $Parameter3 & "<=")
EndIf


Пример получения параметров PowerShell скриптом ps1:

param ([string]$Param1,[string]$Param2)
$N1 = "Параметр1: " + $Param1
$N2 = "Параметр2: " + $Param2
write-output $N1
write-output $N2


Пример получения параметров AutoHotkey скриптом ahk:
Для запуска ahk скриптов необходимо в TCIMG.ini в секции [Programs] в ключе AutoHotkey прописать путь к программе.

param1 := A_Args[1]
param2 := A_Args[2]
param3 := A_Args[3]
MsgBox %param1%
MsgBox %param2%
MsgBox %param3%


Команда script только запускает скрипты и не имеет возможности напрямую получать информацию от них.
Для получения информации от скриптов для дальнейшего использования в других командах можно воспользоваться:

1. Передача и приём STDOUT/STDERR потоков:
  • запускаемый скрипт должен передавать данные в этот/эти потоки.
  • необходимо использовать параметр std<>
  • данные считываются и выводятся в глобальных переменных GLOBALSCRPT и GLOBALSCRPT1
  • смотрите примеры скриптов в папке ...\Files\Scripts\Test\
    
2. Передача и приём данных через текстовый файл:
  • запускаемый скрипт должен записать данные в файл.
  • после работы скрипта данные из файла считываются последующими командами.
  • смотрите примеры скриптов в папке ...\Files\Scripts\Test\
    
3. Дополнительные возможности:
  • воспользоваться параметром ?Y для преобразования текста с помощью функций скриптов.
  • воспользоваться параметром <info=q...> для получения данных с помощью функций скриптов.
  • воспользоваться командами funvb, funjs, funau, которые получают информацию от функций скриптов VBS, JS, AU3.
  • воспользоваться командой cmdbt, которая может запускать и получать информацию из потока заданных программ и скриптов.

Команда имеет возможность передавать другим командам информацию через именные глобальные переменные. см. Дополнение №23

Имя переменнойОписание
GLOBALSCRPT0массив входных данных (в первой ячейке полная строка запуска)
Информация записывается при параметре std<>
GLOBALSCRPTмассив входных данных (данные переданные потоком STDOUT)
GLOBALSCRPT1массив входных данных (данные переданные потоком STDERR)

См. также:

close, closp, dumpp, freez, logpr, openf, openn, opens, openz, prior, procw, resrt, runch, runhp, start, storc, cmdbt

Примеры:
 Как создать кнопку?

aends=@c:\tci_test2.xxx scrpt=Test\TestFileWrite2.au3||GLOBALAENDS<1>||&&wait sends=GLOBALAENDS<1>??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через заданный путь файла с данными

aends=@c:\tci_test2.xxx scrpt=Test\TestFileWrite2.js||GLOBALAENDS<1>||&&wait sends=GLOBALAENDS<1>??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через заданный путь файла с данными

aends=@c:\tci_test2.xxx scrpt=Test\TestFileWrite2.vbs||GLOBALAENDS<1>||&&wait sends=GLOBALAENDS<1>??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через заданный путь файла с данными

creat=$f28||execute.vbs||owrite<1>||content<Set~~oShell~~=~~CreateObject(Chr(34)Shell.ApplicationChr(34))@CRLFoShell.FileRun@CRLF> scrpt=$f28\execute.vbs||&&wait delsm=$f28\execute.vbs ;; создать vbs файл и запустить - аналог запуска диалога "Выполнить" WIN+R

scrpt=%%COMMANDER_PATH%%\AkelFiles\Tools\RegExp\RegExpHelp.hta ;; запуск скрипта

scrpt=%%COMMANDER_PATH%%\Scripts\Name.vbs ;; запуск скрипта

scrpt=%%COMMANDER_PATH%%\Scripts\Name.vbs||&&wait ;; запуск скрипта с ожиданием его завершения

scrpt=%%COMMANDER_PATH%%\Scripts\Name.vbs||[info=x50] ;; запуск скрипта и передача информации в первый параметр

scrpt=%%COMMANDER_PATH%%\Scripts\ReplaceTextInFiles.au3||%WL||0||100 ;; запуск скрипта с параметрами

scrpt=3.a3x||%P%N||Свойства: ;; запустить диалог "Свойства" для файла под курсором

scrpt=AHK1.ahk||%P%N ;; пример запуска скрипта ahk с параметрами: запуск блокнота и открытие файла под курсором (в TCIMG.ini в секцию [Programs] в ключе AutoHotkey путь к программе)

scrpt=PotPlayer.au3||10035 ;; увеличить громкость PotPlayer +5

scrpt=PotPlayer.au3||10035|10035|10035|10035 ;; увеличить громкость PotPlayer +20

scrpt=PotPlayer.au3||10036 ;; уменьшить громкость PotPlayer -5

scrpt=PotPlayer.au3||10037 ;; включить/выключить громкость PotPlayer

scrpt=PotPlayer.au3||10038 ;; включить/выключить состояние "Поверх всех окон" PotPlayer

scrpt=PotPlayer.au3||10061 ;; промотать на 30 секунд назад PotPlayer

scrpt=PotPlayer.au3||10062 ;; промотать на 30 секунд вперёд PotPlayer

scrpt=PotPlayer.au3||10069 ;; воспроизведение в произвольном порядке вкл/выкл PotPlayer

scrpt=PotPlayer.au3||10123 ;; предыдущий трек PotPlayer

scrpt=PotPlayer.au3||10124 ;; следующий трек PotPlayer

scrpt=PotPlayer.au3||10213 ;; удалить воспроизводимый трек PotPlayer (с запросом)

scrpt=PotPlayer.au3||20001 ;; пауза/включение воспроизведение PotPlayer

scrpt=PS1.ps1||param<-Param1~~''%P%N''~~-Param2~~''%T%M''>||std<2>||redir<1> GLOBALSCRPT<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDOUT

scrpt=PS2.ps1||param<-Param1~~''%P%N''>||std<2>||redir<1> GLOBALSCRPT<a> ;; пример запуска скрипта ps1, передача файла под курсором; скрипт возвращает первую строку

scrpt=PS3.ps1||%P%N ;; пример запуска скрипта ps1 с параметрами: запуск блокнота и открытие файла под курсором

scrpt=TCIMGS.a3x ;; запустить скринсейвер (выход по нажатию клавиши 'Escape')

scrpt=Test\TestFileWrite1.ahk||&&wait sends=c:\tci_test.xxx??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через создаваемый файл с данными

scrpt=Test\TestFileWrite1.au3||&&wait sends=c:\tci_test.xxx??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через создаваемый файл с данными

scrpt=Test\TestFileWrite1.js||&&wait sends=c:\tci_test.xxx??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через создаваемый файл с данными

scrpt=Test\TestFileWrite1.vbs||&&wait sends=c:\tci_test.xxx??-1 GLOBALSENDS<a> ;; пример запуска скрипта и получение от него данных, переданных через создаваемый файл с данными

scrpt=Test\TestStd.au3||std<6> GLOBALSCRPT<a> GLOBALSCRPT1<a> ;; пример запуска скрипта и получение от него данных, переданных через потоки STDOUT и STDERR

scrpt=Test\TestStd.js||std<6>||stdcnv<?Fvjs1> GLOBALSCRPT<a> GLOBALSCRPT1<a> ;; пример запуска скрипта и получение от него данных, переданных через потоки STDOUT и STDERR

scrpt=Test\TestStd.vbs||std<6>||stdcnv<?Fvjs1> GLOBALSCRPT<a> GLOBALSCRPT1<a> ;; пример запуска скрипта и получение от него данных, переданных через потоки STDOUT и STDERR

scrpt=Test\TestStdErr.au3||std<4> GLOBALSCRPT1<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDERR

scrpt=Test\TestStdErr.js||std<4> GLOBALSCRPT1<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDERR

scrpt=Test\TestStdErr.vbs||std<4> GLOBALSCRPT1<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDERR

scrpt=Test\TestStdOut.ahk||std<2> GLOBALSCRPT<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDOUT

scrpt=Test\TestStdOut.au3||std<2> GLOBALSCRPT<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDOUT

scrpt=Test\TestStdOut.au3||std<2> GLOBALSCRPT0<a> GLOBALSCRPT<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDOUT и получить строку запуска в GLOBALSCRPT0

scrpt=Test\TestStdOut.js||std<2>||stdcnv<?Fvjs1> GLOBALSCRPT<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDOUT

scrpt=Test\TestStdOut.vbs||std<2>||stdcnv<?Fvjs1> GLOBALSCRPT<a> ;; пример запуска скрипта и получение от него данных, переданных через поток STDOUT

scrpt=ToolTipClipGet.au3||@DesktopWidth-100||@DesktopHeight-200||10||20 ;; запустить скрипт слежения за буфером обмена в правом нижнем углу

scrpt=ToolTipClipGet.au3||0||0||10||20 ;; запустить скрипт слежения за буфером обмена

slist=FOLDC<%WL//1//-2> scrpt=%%COMMANDER_PATH%%\Scripts\Name.au3||[info=x50]||GLOBALSLIST<t>||&&wait ;; запуск скрипта и передача различной информации... с ожиданием завершения

slist=FOLDC<%WL//1//-2> scrpt=%%COMMANDER_PATH%%\Scripts\Name.vbs||[info=x50]||GLOBALSLIST<t>||&&wait ;; запуск скрипта и передача различной информации... с ожиданием завершения


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru