Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Script Request 
Author Message
skole



PostPosted: Tue Feb 21, 2012 20:25    Post subject: Reply with quote

Еще в тему, может кому понадобится... если Batya доработает, то хорошо Smile

Создание шары из текущего каталога
Code:
' ===================================================================
'  Автор:      SkOle, Оренбург
'  Описание:   Предоставляет текущему каталогу общий доступ
'  Параметры:   %P%N
' ===================================================================

Dim WSH, FSO
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "
ootcimv2")
Set objNewShare = objWMIService.Get("Win32_Share")

DESCRIPTION = InputBox("Укажите описание для создаваемого ресурса", "Создание общего ресурса")

errReturn = objNewShare.Create(WSH.CurrentDirectory, FSO.GetFolder(WSH.CurrentDirectory).Name, 0, TRUE, DESCRIPTION)

If errReturn = 0 Then
   MsgBox "Общий ресурс для каталога " & WSH.CurrentDirectory & " успешно создан", vbInformation, "Уведомление"
End If

Set FSO = Nothing
Set WSH = Nothing

Wscript.Quit


Удаление шары, если текущий каталог таким является
Code:
' ===================================================================
'  Автор:      SkOle, Оренбург
'  Описание:   Убирает у текущего каталога общий доступ,
                                если таковой имеется
'  Параметры:   %P%N
' ===================================================================

Dim WSH, FSO
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "
ootcimv2")
Set colShares = objWMIService.ExecQuery ("Select * from Win32_Share Where Name = '" & FSO.GetFolder(WSH.CurrentDirectory).Name & "'")

For Each objShare in colShares
    errReturn = objShare.Delete
Next

If errReturn = 0 Then
   MsgBox "Общий ресурс для каталога " & WSH.CurrentDirectory & " успешно удален", vbInformation, "Уведомление"
End If

Set FSO = Nothing
Set WSH = Nothing

WScript.Quit


Установка шрифта
Code:
' ==============================================================
'  Автор:      SkOle, Оренбург
'  Описание:   Устанавливает текущий шрифт в систему
'  Параметры:   %P%N
' ==============================================================

Option Explicit
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
 
If WScript.Arguments.Count > 0 Then
   If FSO.FileExists(WScript.Arguments(0)) Then
      If (LCase(FSO.GetExtensionName(WScript.Arguments(0))) = "ttf") or (LCase(FSO.GetExtensionName(WScript.Arguments(0))) = "fon") or (LCase(FSO.GetExtensionName(WScript.Arguments(0))) = "otf") Then
         Dim WSH
         Set WSH = CreateObject("WScript.Shell")
         
         FSO.CopyFile WScript.Arguments(0), WSH.SpecialFolders("Fonts") & ""
         WSH.Run "RunDll32.exe gdi32.dll,AddFontResourceA " & FSO.GetBaseName(WScript.Arguments(0))
         
         Set WSH = Nothing
      Else
         MsgBox "Данный файл не является шрифтом", vbCritical, "Ошибка"
      End If
   End If
End If

Set FSO = Nothing
WScript.Quit


Аналог ChoiseEditor и пр. вешается на F4
Code:
' ===================================================================
'  Автор:      SkOle, Оренбург
'  Описание:   Выбирает, через какую программу открыть текущий файл
'            Выбор издет из списка в wincmd.ini
'  Параметры:   %P%N
' ===================================================================

Const Section = "ExternalApplication"

If WScript.Arguments.Count > 0 Then
        Dim WSH, FSO, Ext
       
        Set WSH = CreateObject("WScript.Shell")
        Set FSO = CreateObject("Scripting.FileSystemObject")
       
        Commander_Path = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%")
        Ext = FSO.GetExtensionName(WScript.Arguments(0))
        Ini = ReadIni (Commander_Path & "wincmd.ini", Section, Ext)
        If Ini <> "" Then
                Exe = Replace(Ini, "%COMMANDER_PATH%", Commander_Path)
                Ext =  Trim(Left(FSO.GetExtensionName(Exe), 3))
                If LCase(Ext) = "vbs" Then
                        WSH.Run Exe & " " & chr(34) & WScript.Arguments(0) & chr(34)
                Else
                        WSH.Run chr(34) & Exe & chr(34) & " " & chr(34) & WScript.Arguments(0) & chr(34)
                End If       
        Else
                Ini = ReadIni (Commander_Path & "wincmd.ini", Section, "default")
                Exe = Replace(Ini, "%COMMANDER_PATH%", Commander_Path)
                WSH.Run chr(34) & Exe & chr(34) & " " & chr(34) & WScript.Arguments(0) & chr(34)
        End If
               
        Set WSH = Nothing
        Set FSO = Nothing
End If

' Функция чтения INI-файла была взята с форума wincmd.ru

Function ReadIni( myFilePath, mySection, myKey )
        Const ForReading   = 1
        Const ForWriting   = 2
        Const ForAppending = 8

        Dim intEqualPos
        Dim objFSO, objIniFile
        Dim strFilePath, strKey, strLeftString, strLine, strSection

        Set objFSO = CreateObject( "Scripting.FileSystemObject" )

        ReadIni = ""
        strFilePath = Trim( myFilePath )
        strSection  = Trim( mySection )
        strKey = Trim( myKey )

        If objFSO.FileExists( strFilePath ) Then
                Set objIniFile = objFSO.OpenTextFile( strFilePath, ForReading, False )
                Do While objIniFile.AtEndOfStream = False
                strLine = Trim( objIniFile.ReadLine )

                If LCase( strLine ) = "[" & LCase( strSection ) & "]" Then
                        strLine = Trim( objIniFile.ReadLine )

                Do While Left( strLine, 1 ) <> "["
                        intEqualPos = InStr( 1, strLine, "=", 1 )
                        If intEqualPos > 0 Then
                                strLeftString = Trim( Left( strLine, intEqualPos - 1 ) )
                        If LCase( strLeftString ) = LCase( strKey ) Then
                                ReadIni = Trim( Mid( strLine, intEqualPos + 1 ) )
                                If ReadIni = "" Then
                                        ReadIni = " "
                                End If
                                Exit Do
                        End If
                End If

                If objIniFile.AtEndOfStream Then Exit Do
                        strLine = Trim( objIniFile.ReadLine )
                        Loop
                        Exit Do
                End If
                Loop
                objIniFile.Close
        Else
      MsgBox strFilePath & " не найден", vbCritical, "Ошибка"
        Wscript.Quit 1
    End If
End Function

ну и пример использования... необходимая секция из wincmd.ini
Code:
[ExternalApplication]
; По умолчанию
default=%COMMANDER_PATH%   oolswin32
otepad++
otepad++.exe
; Внешние утилиты
exe=wscript "%COMMANDER_PATH%   oolswin32
estorator
estorator.vbs"
iso=wscript "%COMMANDER_PATH%   oolswin32ultraisoultraiso.vbs"
ico=%COMMANDER_PATH%   oolswin32icofxicofx.exe
psd=%COMMANDER_PATH%   oolswin32photoshopphotoshop.exe


Last edited by skole on Sun Feb 26, 2012 09:41; edited 1 time in total
View user's profile Send private message ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group