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: Îòïðàâêà ôàéëà ïî ïî÷òå ñ çàïèñüþ êîììåíòàðèÿ â áóôåð 
Author Message
AVos002



PostPosted: Mon Jun 07, 2010 11:32    Post subject: Reply with quote

Çäðàâñòâóé Batya!
Êàê ÿ è ïðåäïîëîæèë, íà ðàáî÷åì êîìïüþòåðå òâîé ñêðèïò çàïóñêàåòñÿ, ÷òî çà áîäÿãà ñ äîìàøíèì êîìïîì íå ïîíèìàþ.
Ìåæäó òåì ÿ íåìíîãî äîðàáîòàë òâîé ñêðèïò â ÷àñòè ïåðåêîäèðîâêè DOS Windows è ïîëó÷èëîñü âîò, ÷òî :
Code:

'==============================================================
' Îòêðûòèå íîâîãî ñîîáùíèÿ MS Outlook ñ âëîæåííûìè ôàéëàìè
'
' Ïàðàìåòðû:
' {ôàéë äëÿ êîììåíòàðèÿ} {ôàéë-ñïèñîê ôàéëîâ äëÿ âëîæåíèÿ}
'
' Ïðèìåð ïàðàìåòðîâ ïðè âûçîâå èç TC:
' %P%N %L
'==============================================================
Option Explicit

Dim FSO, MSO, MSG, File, List, F
Set FSO = CreateObject("Scripting.FileSystemObject")
File    = WScript.Arguments(0)
List    = WScript.Arguments(1)

Set MSO = CreateObject("Outlook.Application")
Set MSG = MSO.CreateItem(0)

MSG.Subject = FSO.GetFileName(File) & " [" & GetComment(File) & "]"
MSG.Body    = "Äîáðûé äåíü!" & vbCrLf & vbCrLf & _
              "---"  & vbCrLf & _
         "Ñ Óâàæåíèåì, AVos002"

For Each F In Split(FSO.OpenTextFile(List).ReadAll, vbNewLine)
  If F <> "" And FSO.FileExists(F) Then
    MSG.Attachments.Add F
  End If
Next


MSG.Display

Set MSG = Nothing
Set MSO = Nothing
Set FSO = Nothing
WScript.Quit

Function GetComment(pPath)
  Const CommFile = "descript.ion"
  Dim lPath, lName, lText, lComm
  Dim lNameArch
  lPath = FSO.GetParentFolderName(pPath)             'ïîëó÷èòü íàçâàíèå ïîëíîãî ïóòè
  lName = FSO.GetFile(pPath).Name                'ïîëó÷èòü íàçâàíèå ôàéëà
  lnameArch=lName
  lName = RusDosWin(lName,0)
  If Instr(lName, " ") > 0 Then lName = """" & lName & """"       'åñëè â íàèìåíîâàíèè ôàéëà åñòü ïðîáåëû, òîãäà íàçâàíèå çàêëþ÷èòü â êàâû÷êè
  If lPath <> "" Then lPath = lPath & "\"             'åñëè íàèìåíîâàíèå ïóòè íå ïóñòîå, òîãäà ïðèáàâèòü â êîíåö ñëýø
  If FSO.FileExists(lPath & CommFile) Then             'åñëè ôàéë descript.ion â òåêóùåé äèðåêòîðèè åñòü, òîãäà ïðîâåäåì äåéñòèÿ ïî ïîèñêó êîììåíòàðèÿ
    lText = FSO.OpenTextFile(lPath & CommFile).ReadAll          'ïåðåäàòü â êîíòåéíåð (ïåðåìåííîé) òåêñò ôàéëà descript.ion
    lComm = Filter(Split(lText, vbNewLine), lName & " ", True, 1)    'âûáðàòü ñòðîêó ñîîòâåòñòâóþùóþ íàèìåíîâàíèþ ôàéëà
    If UBound(lComm) > - 1 Then                'åñëè âûáðàííàÿ ñòðîêà ñîäåðæèò çíà÷åíèå
      GetComment = Replace(Mid(lComm(0), Len(lName) + 2), "Â", "")    'âûðåçàòü (Mid) êîììåíòàðèé è çàìåíèòü (Replace) çíà÷åíèå "Â" íà ïóñòîå
      GetComment = Trim(Replace(GetComment, "\n", " "))
    Else
      GetComment = ""
    End If
  Else                            'åñëè ôàéë descript.ion â òåêóùåé äèðåêòîðèè îòñóòñòâóåò
    GetComment = ""                      'òîãäà êîììåíòàðèé ïóñòîé
  End If
  GetComment=RusDosWin(GetComment,1)
End Function

'=========================================================================================================
Function RusDosWin(TextV, CodeV)
'  Ïðåîáðàçîâàíèå ÊÈÐÈËËÈÖÛ:
'  CodeV = 0 - èç DOS â Windows
'        = 1 - îáðàòíî
'  D - êîíñòàíòà êîäîâ ðóññêèõ ñèìâîëîâ äëÿ DOS (cp866)
'  W - êîíñòàíòà êîäîâ ðóññêèõ ñèìâîëîâ äëÿ Windows (cp1251)
'  îáå êîíñòàíòû ñîäåðæàò òàêóþ ïîñëåäîâàòåëüíîñòü ñèìâîëîâ:
'  ÀÁÂ...ßàáâ...ÿ
'============================================
Const D = "ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãä叿çèéêëìíîïðñòóôõö÷øùúûüýþÿ¹"
Const W = "€�‚ƒ„…ð†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥ñ¦§¨©ª«¬­®¯àáâãäåæçèéêëìíîïü"
'           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^¦
' ============================================
If CodeV = 0 Then
      RusDosWin = SymChange(TextV, W, D)
    Else
      RusDosWin = SymChange(TextV, D, W)
End If
'RusDosWin = D
End Function

Function SymChange(TextVal, NewCode, OldCode)
'  Ïåðåêîäèðîâêà ñèìâîëîâ  OldCode -> NewCode:
'  â ïåðåìåííîé TextVal âñå ñèìâîëû íàáîðà OldCode çàìåíÿþòñÿ íà ñîîòâåòñòâóþùèå ñèìâîëû íàáîðà NewCode$
'  ÂÍÈÌÀÍÈÅ! Äîëæíî âûïîëíÿòüñÿ óñëîâèå:  LEN(NewCode)=LEN(OldCode)
Dim Sym, PromText
Dim Ltext
Dim i, k
Sym = "" ' TextVal
Ltext = Len(TextVal)
If Ltext > 0 Then
    For i = 1 To Ltext
        PromText = Mid(TextVal, i, 1)             'âûðåçàåì ñèìâîë èç ïåðâîíà÷àëüíîé ñòðîêè
        If Asc(PromText) > 126 Then               'åñëè êîä âûðåçàííîãî ñèìâîëà áîëüøå 126 (ò.å. òðåáóåò ðàñøèôðîâêè)
       k = InStr(OldCode, PromText)           'èùåì ïîðÿäêîâûé íîìåð âõîæäåíèÿ âûðåçàííîãî ñèìâîëà â òàáëèöó OldCode
            If k > 0 Then                         'òîãäà, åñëè ïîðÿäêîâûé íîìåð âõîæäåíèÿ áîëåå 0 (ò.å. íàéäåí)
           Sym = Sym & Mid(NewCode, k, 1)          'òîãäà, äîáàâëÿåì ê ðåçóëüòèðóþùåé ñòðîêå ñîîòâåòñòâóþùèé ñèìâîë èç NewCode
       Else                   'åñëè â OldCode ñîîòâåòñòâóþùèé ñèìâîë íå íàéäåí,
      MsgBox "Ñèìâîë «" & PromText & "íå íàéäåí"   'òîãäà ïîêàçàòü ýòîò ñèìâîë
       end if   
        Else                     'åñëè êîä âûðåçàííîãî ñèìâîëà ìåíüøå 126
            Sym = Sym & PromText            'òîãäà âñòàâèì â ðåçóëüòèðóþùêþ ñòðîêó âûðåçàííûé ñèìâîë áåç èçìåíåíèé
        End If
    Next
End If
SymChange = Sym
End Function

Íàäåþñü ýòî íå âîçáðàíÿåòñÿ?
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group