1

Тема: SciTE: запуск выделенной части кода

Скрипт автоматически сохраняет выделенный код во временный файл и запускает его, позволяя таким образом исполнить набранный в редакторе код частично. Файл ExecSel.vbs.
Автор скрипта - mozers.

' Execute Selection
' Version: 1.0
' Autor: mozers™
' ------------------------------------------------
' Выполняет выделенный в редакторе код
' Для подключения добавьте в свой файл .properties следующие строки:
'    file.patterns.execsel=*.bat;*.cmd;*.vbs;*.js;*.py;*.pyw
'    command.name.2.$(file.patterns.execsel)=Execute Selection
'    command.2.$(file.patterns.execsel)=cscript /nologo "$(SciteDefaultHome)\tools\ExecSel.vbs" $(FileExt)
'    command.input.2.$(file.patterns.execsel)=$(CurrentSelection)
'    command.mode.2.$(file.patterns.execsel)=subsystem:console,savebefore:no
' ------------------------------------------------
Option Explicit
Dim WshShell, FSO, code, objArgs, file_ext, tmpfile, file, script, objExec, output

code = WScript.StdIn.ReadAll
If code = "" Then WScript.Quit

Set objArgs = WScript.Arguments
If objArgs.Count < 1 then WScript.Quit
file_ext = UCase(objArgs(0))

Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

tmpfile = WshShell.ExpandEnvironmentStrings("%TEMP%\" & "$execsel." & file_ext)
Set file = FSO.OpenTextFile(tmpfile, 2, True)
file.Write code
file.Close

If file_ext = "VBS" Or file_ext = "JS" Then
    script = "cscript /nologo"
ElseIf file_ext = "PY" Or file_ext = "PYW" Then
    script = "python"
Else
    script = ""
End If

Set objExec = WshShell.Exec("%COMSPEC% /C " & script & " """ & tmpfile & """ 2>&1")
Do While objExec.Status = 0
    output = output & ObjExec.StdOut.ReadAll
    WScript.Sleep 100
Loop
output = DosToWin(output)
WScript.Echo output
WScript.Quit

Function DosToWin(s)
    Dim i, k, ss
    ss = ""
    For i = 1 To Len(s)
        k = Asc(Mid(s, i, 1))
        If (128 <= k) And (k <= 175) Then
            k = k + 64
        ElseIf (224 <= k) And (k <= 239) Then
            k = k + 16
        ElseIf k = 240 Then
            k = 168
        ElseIf k = 241 Then
            k = 184
        End If
        ss = ss + Chr(k)
    Next
    DosToWin = ss
End Function

Примечание: если вы установите этот скрипт действительно под номером команды 2, автоматически появится шорткат Ctrl+2 (первые 10 шорткатов появляются автоматом в зависимости от номера команды). Обратите внимание, что меню Tools отображается по-разному для разных расширений файлов.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: SciTE: запуск выделенной части кода

Другой способ: например, для файлов WSH (vbs, js, wsf) можно ограничиться только изменениями в файле настроек:

command.name.4.*.vbs;*.js;*.wsf=Execute Selection
command.4.*.vbs;*.js;*.wsf=CMD /C MORE > %TEMP%\tmp.$(FileExt) && "$(SciteDefaultHome)\scite.exe" -menucommand:420 && cscript /nologo %TEMP%\tmp.$(FileExt)
command.input.4.*.vbs;*.js;*.wsf=$(CurrentSelection)
command.mode.4.*.vbs;*.js;*.wsf=subsystem:console,savebefore:no

Автор идеи - mozers.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.