|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Проверка списка имен в цикле |
|
|
VBS/WSH/JS - Проверка списка имен в цикле
|
Старожил Сообщения: 226 |
Добрый день.
Имеется папка с файлами определённой структуры: file001.sd file002.sd file003.sd … file009.sd file00a.sd file00b.sd file00c.sd …. file00z.sd file010.sd file011.sd file012.sd и т.д. Задача: Проверять все файлы в папке на последовательность. И в случае нарушения последовательности, выдавать ошибку. Например, если в последовательности file001 - file009 не будет файла file003 то выдавалась бы ошибка. Как я вижу решение данной задачи: Собрать все имена файлов в массив. А дальше для каждой последовательности создать свой цикл, со своим условием. Собрать файлы в массив я смогу, а вот написать условие для отработки цикла с трудом смогу. Помогите пожалуйста. |
|
------- Отправлено: 14:21, 23-12-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Option Explicit
Dim strSourceFolder
Dim arr10To36
Dim i, j, k
Dim strFileName
strSourceFolder = "E:\Песочница\0338"
arr10To36 = Split("0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z", ";")
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strSourceFolder) Then
For i = 0 To 35
For j = 0 To 35
For k = 0 To 35
If i = 0 And j = 0 And k = 0 Then
Else
strFileName = "file" & arr10To36(i) & arr10To36(j) & arr10To36(k) & ".sd"
If Not .FileExists(.BuildPath(strSourceFolder, strFileName)) Then
WScript.Echo "Can't find file [" & strFileName & "]."
WScript.Quit 2
End If
End If
Next
Next
Next
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
End With
WScript.Quit 0
|
Последний раз редактировалось Iska, 25-12-2013 в 15:46. Причина: Исправлена описка Отправлено: 15:12, 23-12-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 226
|
Профиль | Отправить PM | Цитировать Iska, Почему то скрипт упорно хочет найти file010.sd - которого быть не может т.к. после file009.sd идет файл file00a.sd
|
------- Отправлено: 15:40, 23-12-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата bombording:
Option Explicit
Dim strSourceFolder
Dim arr10To36
Dim i, j, k
Dim strFileName
strSourceFolder = "E:\Песочница\0338"
arr10To36 = Split("0;1;2;3;4;5;6;7;8;9;a;b;c;d;e;f;g;h;i;j;k;l;m;n;o;p;q;r;s;t;u;v;w;x;y;z", ";")
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(strSourceFolder) Then
For i = 0 To 35
For j = 0 To 35
For k = 0 To 35
If i = 0 And j = 0 And k = 0 Then
Else
strFileName = "file" & arr10To36(i) & arr10To36(j) & arr10To36(k) & ".sd"
If Not .FileExists(.BuildPath(strSourceFolder, strFileName)) Then
WScript.Echo "Can't find file [" & strFileName & "]."
WScript.Quit 2
Else
WScript.Echo "Find file [" & strFileName & "]."
End If
End If
Next
Next
Next
Else
WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
WScript.Quit 1
End If
End With
WScript.Quit 0
|
|
Последний раз редактировалось Iska, 25-12-2013 в 15:46. Причина: Исправлена описка Отправлено: 15:47, 23-12-2013 | #4 |
Старожил Сообщения: 226
|
Профиль | Отправить PM | Цитировать Iska, Вы правы. Просто я для теста скрипта скопировал половину файлов.
В таком случае как узнать, какой файл последний и прекратить выполнение скрипта на нём? Ведь файлов каждый раз может быть разное количество. Список может кончаться например и на file02b.sd и на file04s.sd или на другом имени. |
|
------- Отправлено: 16:10, 23-12-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата bombording:
Цитата bombording:
![]() |
||
Отправлено: 16:16, 23-12-2013 | #6 |
Старожил Сообщения: 226
|
Профиль | Отправить PM | Цитировать Iska, Быть может будет проще, посчитать общее количество файлов типа file*.sd и закончить цикл на шаге равном количеству файлов?
|
------- Отправлено: 17:37, 23-12-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата bombording:
|
||
Последний раз редактировалось Iska, 27-12-2013 в 10:58. Причина: Исправлена описка; зачеркнул некорректный код. Отправлено: 23:19, 23-12-2013 | #8 |
Старожил Сообщения: 226
|
Профиль | Отправить PM | Цитировать Iska, Работает! Но честно говоря не до конца понимаю как функция ExistLastName определяет что файл последний? За счет Step -1 ??
|
------- Отправлено: 10:02, 24-12-2013 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Угу. Тремя вложенными циклами генерирует имена файлов с конца (т.е., с «filezzz.sd») и проверяет их существование. Как только будет найден существующий файл — происходит выход из функции. Поскольку переменные «x», «y» и «z» передаются в параметры функции по ссылке, то значения этих переменных (а не их копий в случае передаче по значению) могут быть изменены внутри функции. Посему после выхода из функции мы имеем в переменных «x», «y» и «z» 36-тиричные цифробуквы, однозначно определяющие последний существующий файл в алфавитном порядке.
|
Отправлено: 10:12, 24-12-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Цикл в Цикле | deamon7 | Скриптовые языки администрирования Windows | 5 | 15-04-2023 09:04 | |
CMD/BAT - Проверка файлов в сетевом каталоге, и создание списка из тех которые по размеру < N | wonted | Скриптовые языки администрирования Windows | 21 | 17-03-2014 13:40 | |
VBS/WSH/JS - [решено] Сравнить три списка имен файлов между собой. | bombording | Скриптовые языки администрирования Windows | 2 | 19-12-2013 15:19 | |
запуск GUICtrlSetData в цикле | bugmenotagain | AutoIt | 10 | 04-08-2012 16:30 | |
CMD/BAT - [решено] Множественная проверка в цикле (IF) с оперратором "ИЛИ"(OR) | Nuclears | Скриптовые языки администрирования Windows | 7 | 29-12-2011 13:13 |
|