Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MS Exchange Public folder / 6 сообщений из 6, страница 1 из 1
14.02.2005, 18:35
    #32915054
kettlebells
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Exchange Public folder
Мне нужно найти все файлы в этом фолдере и просто скопировать их в другое место.
Как начать, кто подскажет?

VB.net или C#, все-равно.

Спасибо.
...
Рейтинг: 0 / 0
15.02.2005, 06:38
    #32915431
Ibavr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Exchange Public folder
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Imports System.IO

Module Module1

    Sub main()
        MovingAllFiles("C:\testA", "C:\testB")
    End Sub

    Sub MovingAllFiles(ByVal fromPath As String, ByVal toPath As String, Optional ByVal overwrite As Boolean = False)
        'Контроль на сущ. указанного каталога
        If Directory.Exists(fromPath) Then
            Dim fl() As String = Directory.GetFiles(fromPath)
            Array.Reverse(fl)
            While fl.Length >  0 
                Dim fo As New FileInfo(fl(fl.GetUpperBound( 0 )))
                'Копирование файла, по умолчанию перезапись при совпадении имен отключена
                If overwrite OrElse Not File.Exists(toPath & "\" & fo.Name) Then
                    fo.CopyTo(toPath & "\" & fo.Name, overwrite)
                End If
                ReDim Preserve fl(fl.GetUpperBound( 0 ) -  1 )
            End While
        End If
    End Sub

End Module
...
Рейтинг: 0 / 0
15.02.2005, 09:08
    #32915546
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Exchange Public folder
Зачем так сложно? Можно проще...
Код: plaintext
1.
2.
3.
4.
5.
6.
If Directory.Exists("c:\temp") Then
      For Each m As String In Directory.GetFiles("c:\temp")
           Dim mm As New FileInfo(m)
           File.Copy(m, "c:\temp1\" & mm.Name, True)
      Next
End If
P.S. Только подозреваю этот вариант челу не подойдёт...
...
Рейтинг: 0 / 0
15.02.2005, 09:52
    #32915639
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Exchange Public folder
Или даже так:
Код: plaintext
1.
2.
3.
4.
5.
6.
If Directory.Exists("c:\temp") Then
      For Each m As String In Directory.GetFiles("c:\temp")
           Dim mm As New FileInfo(m)
           If File.Exists(m) Then mm.CopyTo("c:\temp1\" & mm.Name, True)
      Next
End If
Можно обернуть это все в Sub с передачей параметров, а можно и так использовать...
...
Рейтинг: 0 / 0
15.02.2005, 19:35
    #32917229
kettlebells
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Exchange Public folder
Всем спасибо, но это не точно то что мне надо было.
А вот правильное решение:



Private Sub GetAndCopyAttachments()
Dim objOutlookApp As Object
Dim objOutlookNS As Object
Dim objFolderGroup As Object
Dim objCurFolderGroup, objFolders As Object
Dim objCurFolder As Object
Dim Item, Atmt As Object
Dim strDestURL As String
Dim strFileName As String



objOutlookApp = New Microsoft.Office.Interop.Outlook.Application
objOutlookNS = objOutlookApp.GetNamespace("MAPI")
objOutlookApp.Session.Logon(, , True, True)
objFolderGroup = objOutlookNS.Folders


objCurFolder = GetFolder("Public Folders/All Public Folders/IA Forms/human Resources")

For Each Item In objCurFolder.Items
For Each Atmt In Item.Attachments
Atmt.SaveAsFile(strFileName)
Next Atmt
Next Item

End Sub

Public Function GetFolder(ByVal strFolderPath As String) As Microsoft.Office.Interop.Outlook.MAPIFolder
' folder path needs to be something like
' "Public Folders\All Public Folders\Company\Sales"
Dim objApp As Outlook.Application, objNS As Outlook.NameSpace, I As Integer
Dim colFolders As Outlook.Folders, objFolder As Outlook.MAPIFolder, arrFolders() As String


strFolderPath = Replace(strFolderPath, "/", "\")
arrFolders = Split(strFolderPath, "\")
objApp = CreateObject("Outlook.Application")
objNS = objApp.GetNamespace("MAPI")
objFolder = objNS.Folders.Item(arrFolders(0))

If Not objFolder Is Nothing Then
For I = 1 To UBound(arrFolders)
colFolders = objFolder.Folders
objFolder = Nothing
objFolder = colFolders.Item(arrFolders(I))
If objFolder Is Nothing Then
Exit For
End If
Next
End If



Return objFolder

End Function
...
Рейтинг: 0 / 0
16.02.2005, 07:16
    #32917520
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Exchange Public folder
Если бы точнее задавал вопрос, то и решение было бы адекватным:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
        Dim m As New Outlook.Application
        Dim OLObject As Outlook.NameSpace = m.GetNamespace("MAPI")
        Dim inbox As Outlook.MAPIFolder = OLObject.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
        
        For Each msg As Outlook.MailItem In inbox.Items
            For Each atm As Outlook.Attachment In msg.Attachments
                atm.SaveAsFile(Path.Combine("c:\temp", atm.FileName))
            Next
        Next
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MS Exchange Public folder / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]