Папка \experts\files

 

Всем привет.

Подскажите как реализовать следующию мысль.
В папку experts\files могут писаться разные файлы от экспертов, скриптов. У меня таких файлов пишется и долгое время хранится очень много, порядка 2000 файлов, разного формата. Найти среди них нужный файл занимает некоторое время, которого как обычно нехватает. Подскажите способ как с помощью DLL создать, если её нет, папку по названию эксперта или скрипта и потом научить эксперта складывать файлы в строго назначенную папку.

Для этого как я думаю существуют библиотеки в Windows, но какая конкретно понятия не имею. Библиотек много но нету в сети нормального описания каждой из библиотек, что она делает.

 

Просто вписать название папки в filename функции FileOpen( string filename, int mode, int delimiter=';') чем не устраивает?

 
zigan:

Просто вписать название папки в filename функции FileOpen( string filename, int mode, int delimiter=';') чем не устраивает?


С записью в папку нет проблем.
Проблема создать эту папку с помощью эксперта или скрипта. Руками создавать не хочу, т.к. могу забыть это сделать и в результате записать 10000 файлов а потом выгрибать и разбарать что нужно что нет. А так в отдельной папке.
 
Проблема создать эту папку с помощью эксперта или скрипта...
Всетаки попробуйте создать файл в несуществующюю папку - увидите она появится.
Пимерно так: int hh=FileOpen("Papka1\\\\"+sFileName+".dat",FILE_BIN|FILE_WRITE);   /Papka1-название папки, sFileName-название файла
 
HIDDEN:

с помощью DLL создать, если её нет, папку по названию эксперта или скрипта и потом научить эксперта складывать файлы в строго назначенную папку.


Это можно сделать в данной корневой папке и в рамках MQL, функции все есть. Можно и банальным Windows vbs скриптом через COM объект FileSystemObject.
Пример работы с файлами ниже.

Option Explicit
 
' ------------------------------------------
' Windows Script Host VBScript Run-time File
' Copy the new .avc AVP bases
' (C) Valeri Chesnokov, 2002
' All Rights Reserved
' ------------------------------------------
 
Dim CS_SOUR_PATH
Dim CS_DEST_PATH
Dim CS_MASK
 
CS_SOUR_PATH = "P:\AVIR\AVP\"
CS_DEST_PATH = "C:\Program Files\Common Files\AVP Shared Files\Bases\"
CS_MASK = "avc isu klb klc set vnd"
 
Dim fso 'As Scripting.FileSystemObject
Dim oSourFolder
Dim oDestFolder
Dim oFile
Dim sName, sExt, sReport
Dim s, sSour, sDest
Dim lCount
 
s = "Sour path: " & CS_SOUR_PATH & vbLf
s = s & "Dest path: " & CS_DEST_PATH & vbLf
s = s & "Mask: " & CS_MASK
MsgBox s, vbInformation, "Starting [AVP .avc Update]"
 
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
 
Set oSourFolder = fso.GetFolder(CS_SOUR_PATH)
Set oDestFolder = fso.GetFolder(CS_DEST_PATH)
lCount = 0
 
For Each oFile In oSourFolder.Files
    sName = oFile.Name
    sExt = Right(sName, 3)
 
    If InStr(1, UCase(CS_MASK), UCase(sExt)) > 0 Then
        sSour = oFile.Path
        sDest = oDestFolder.Path & "\" & oFile.Name
 
        On Error Resume Next
        fso.CopyFile sSour, sDest, True
        On Error Goto 0
        
        If Err.Number = 0 Then
            sReport = sReport & sName & vbLf
            lCount = lCount + 1
        Else
            Err.Clear
            MsgBox sSour, vbExclamation, "Error copying"
        End If
    End If
Next
 
sReport = "Скопированы файлы  (" & lCount & "):" & vbLf & sReport
MsgBox sReport, vbInformation, "[AVP .avc Update]"
 
' Done
Set oSourFolder = Nothing
Set oDestFolder = Nothing
Set fso = Nothing
 
    // имя файла
    string fName = StringConcatenate( "Directory1\\", WindowExpertName(), "\\filename.csv" );