Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание скрипта с использованием WSH - Windows Script Host на VB laguage / 7 сообщений из 7, страница 1 из 1
23.06.2016, 12:15
    #39260917
NIXARES
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
есть задача
1) пусть в определенний каталог "TEST" на диск С скопировано файл формата :

binYYMMDDHHmm.DAT - название сплошнoe без точек и пробелов

2) необходимо переместить эти файлы на диск D по пути:

D:\YY\MM\DD\HH\

причем надо проверять если файл назван binYY.DAT то его копировать в папку D:\YY т так далее....
...
Рейтинг: 0 / 0
23.06.2016, 12:45
    #39260940
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
и в чем проблема?
...
Рейтинг: 0 / 0
23.06.2016, 17:58
    #39261260
NIXARES
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
Вот что вишло:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub COPY()
    Dim i, oFSO, oFolder, oFile, MyPath, curPath, S, Z
    MyPath = "C:\test"
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(MyPath)
    For Each oFile In oFolder.Files
       S = oFile.Name
       curPath = "D:\"
       For i = 1 To InStr(1, S, ".") - 2 Step 2
            Z = Mid(S, i, 2)
            curPath = curPath & "\" & Z
            If Dir(curPath, 16) = "" Then
                 MkDir curPath
            End If
       Next i
       oFile.Move curPath & "\" & S
    Next
    Set oFSO = Nothing
    Set oFolder = Nothing
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ

только я bіn не учел и у меня вроде цикл бегает по всем папкам пути а должен найти нужную папку и остановится, можете исправить не получается....

исправил For i = 1 To InStr(1, S, ".") - 2 Step 2 на For i = 4 To InStr(1, S) - 2 Step 2 чтобы сразу пропускало bin и читало имя, дальше не получается
...
Рейтинг: 0 / 0
24.06.2016, 08:19
    #39261498
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
NIXARES,
не совсем понятно что значит автор"цикл бегает по всем папкам пути а должен найти нужную папку и остановится"
вот Ваш код, который работает корректно

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Sub COPY()
    Dim i, oFSO, oFolder, oFile, MyPath, DestPath, curPath, S, Z
    MyPath = "C:\test"
    DestPath = "D:\"
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(MyPath)
    For Each oFile In oFolder.Files
        S = oFile.Name
        curPath = DestPath & Mid(S, 4, 10)
        'проверяем если такая папка
        If Not oFSO.FolderExists(curPath) Then
            curPath = DestPath
            'бежим по иерархии и сохдаём нужную папку
            For i = 4 To InStr(1, S, ".") - 2 Step 2
                Z = Mid(S, i, 2)
                curPath = curPath & "\" & Z
                If Not oFSO.FolderExists(curPath) Then
                    'папки нет, создаём
                    oFSO.CreateFolder curPath
                End If
            Next i
        End If
        oFile.COPY curPath & "\" & S
    Next
    Set oFSO = Nothing
    Set oFolder = Nothing
End Sub
...
Рейтинг: 0 / 0
24.06.2016, 09:46
    #39261554
NIXARES
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
Суть вот в чем я использовал "." как разделитель для считывания части имени, а нужно это делать без нее и мне нужно копировать файлы в таком порядке - если файл назван binYY.DAT то он идет в папку D:\YY ; если файл назван binDD.DAT дет в папку D:\DD,
а если он назван binYYMMDDHHmm.DAT то файл должен быть перемещен в папку что соответствует последней части имени а значит в данном случаи в папку :
D:\mm;

А про цикл, я просто думал что у меня он пробегает все папки D:\YY\MM\DD\YY\mm даже если нашел нужную папку, а должен найти нужную и остановиться, а дальше перебирать другие файлы если такие есть...

Можете написать, у меня никак не выходит довести этот код до конца, на том что скинул и застрял....
...
Рейтинг: 0 / 0
24.06.2016, 10:33
    #39261592
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
NIXARES, подозреваю, что Вы сами что-то не до понимаете или не допонимаю я.
Как
Код: vbnet
1.
2.
binYY.DAT то он идет в папку D:\YY ; если файл назван binDD.DAT дет в папку D:\DD,.... binYYMMDDHHmm.DAT в данном случаи в папку :
D:\mm



если подразумевается, что вместо YY, DD, mm это цифры, то вполне может быть совпадения
bin16.dat
din1606241616.dat
...
Рейтинг: 0 / 0
24.06.2016, 10:40
    #39261597
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создание скрипта с использованием WSH - Windows Script Host на VB laguage
NIXARES,
для получения имени файла без имени используйте
Код: vbnet
1.
2.
        'получаем имя файла без имени
        SName = oFSO.GetBaseName(oFile.Name)


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub COPY()
    Dim i, oFSO, oFolder, oFile, MyPath, DestPath, curPath, S, Z
    MyPath = "C:\test"
    DestPath = "D:\"
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFolder = oFSO.GetFolder(MyPath)
    For Each oFile In oFolder.Files
        'получаем имя файла без имени
        S = oFSO.GetBaseName(oFile.Name)
        curPath = DestPath & Right(S, 2)
        'проверяем если такая папка
        If Not oFSO.FolderExists(curPath) Then
            'папки нет, создаём
            oFSO.CreateFolder curPath
        End If
        oFile.COPY curPath & "\" & oFile.Name
    Next
    Set oFSO = Nothing
    Set oFolder = Nothing
End Sub


но что-то мне подсказывает, что это не то, что надо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание скрипта с использованием WSH - Windows Script Host на VB laguage / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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