Запуск выделенных файлов по очереди в прописанной в скрипте программе с ограничениями по количеству
Code
' RunFilesNInProgram.vbs
'======================== Описание =====================================
' Запуск выделенных файлов по очереди в прописанной в скрипте программе с ограничениями по количеству
' если расширение файла не совпадает с поддерживаемыми , просто открывается программа
' если перетянуть любой файл на кнопку, то он также откроется в программе
'======================= Параметры =====================================
' 1-й параметр: список_файлов.tmp (обязательный)
' 2-й параметр: максимальное количество открытия файлов
'======================== Примеры =====================================
' %L - открыть выделенные файлы (максимум задаётся в переменной n)
' %L 5 - открыть выделенные файлы (максимум 5)
' при перетаскивании на кнопку открывается один файл
' Автор: Аверин Андрей
' Версия: 1.1 ( 30.11.2011 - 01.12.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'================= Изменяемые параметры ================================
Program = "%COMMANDER_PATH%\AkelPad.exe" ' программа
LineExt = ";txt;ini;mnu;" ' строка поддерживаемых расширений
n = 10 ' максимальное количество открытия файлов (переопределяется 2-м параметром)
'=========================================================================
Dim WSH
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Cnt = WScript.Arguments.Count : k = 0
Program = GetPath(Program)
If Not FSO.FileExists(Program) Then
MsgBox "Не верно указана программа", vbOKOnly & vbInformation, "" : WsEnd
End If
If Cnt = 0 Then
RunProgram : WsEnd
End If
Param = GetPath(WScript.Arguments(0))
If LCase(FSO.GetExtensionName(Param)) = "tmp" Then
List = Split(FSO.OpenTextFile(Param).ReadAll, vbNewLine)
If Cnt > 1 Then n = CInt(WScript.Arguments(1))
Else
Cnt = 1 : RunProgram : WsEnd
End If
For i = 0 To Ubound(List)
Param = GetPath(List(i))
Ext = LCase(FSO.GetExtensionName(Param))
If InStr(LineExt, ";" & Ext & ";") > 0 Then
Cnt = 1 : k = k + 1 : RunProgram
End If
If n =< k Then Exit For
Next
If k = 0 Then
Cnt = 0 : Param = "" : RunProgram
End If
WsEnd
Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
Sub WsEnd : Set FSO = Nothing : Set WSH = Nothing : WScript.Quit : End Sub
Sub RunProgram
If Cnt = 1 Then Param = Chr(32) & Chr(34) & Param & Chr(34)
WSH.Run Chr(34) & Program & Chr(34) & Param , 1, False
End Sub