Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
skiff2140
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 5
#1

Поиск по маске - VBScript/JScript

09.12.2013, 23:07. Просмотров 3047. Ответов 8
Метки нет (Все метки)

Требуется разработать скрипт для поиска и удаления на заданном диске или в заданной папке всех файлов, имена которых соответствуют заданной маске. Исходные данные должны передаваться через аргументы скрипта. Результат поиска должен фиксироваться в окне типа MS Word.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 23:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск по маске (VBScript/JScript):

Поиск файлов по маске
Здрасте, у меня проблема с кодом. Он должен искать все файлы по маске xls, xlsx...

Поиск по маске с добавлением информации
Требуется разработать скрипт, который бы осуществлял поиск на диске или в...

Поиск файлов по маске и вывести на экран
Здрасте, нужно найти все файлы по маске и вывести с сообщением Код ниже делает...

Автоматический поиск файла по маске и изменение его расширения
Добрый день уважаемые форумчане! Не откажите в помощи, по такому вопросу:...

Поиск файлов по маске из "чёрного" списка
Подскажите как вывести список файлов (и каталогов) с учетом масок "черного"...

Удаление файлов по маске
Господа, помогите пожалуйста, нужен скрипт который бы удалял в конкретной папке...

8
skiff2140
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 5
17.12.2013, 19:17  [ТС] #2
помогите пожалуйста, не получается поиск по расширениям ,вроде все работает все выводит в Word, но сам скрипт нужно запускать через командную строку, а там не работает

Javascript
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Объявляем переменные
var i, n, objArgs, s, args, files, dt, fpath,temp="Рисунок GIF"; 
// Создаем объект WshArguments
objArgs = WScript.Arguments;  
// Определяем общее количество аргументов
n = objArgs.Count();
args = new Array(n);
// цикл по коллекции аргументов
for (i=0; i <= n-1; i++){
    // Записываем в массив
    args[i] = objArgs(i); 
}
fpath=args[0];//путь поиска файлов
files=new Array();
//вызываем функцию поиска файлов, включая подпапки
GetFiles(fpath,files);
 
//вывод в ворд
//путь к шаблону
var PathTempl="D:\\lol.dotx"
//создаем объект Application
var WA=WScript.CreateObject("Word.Application");
//создаем новый документ (шаблон)
var WD=WA.Documents.Add(PathTempl);
//делаем окно Winword видимым
WA.Visible=true;
//максимизируем окно Winword
WA.WindowState=1;
//Получаем ссылку на объект Selection
var Sel=WA.Selection;
//Устанавливаем размер шрифта 12 пт
Sel.Font.Size=12;
//Переходим к закладке NameF
WD.Bookmarks("NameF").Select();
var t1="",t2="",t3="";
//Печать содержимого полей найденных объектов
for (i=0; i!=files.length; i++){    
    t1=files[i].Name+"";
    t2=files[i].DateCreated+"";
    t3=files[i].Size+"";
    //Печатаем поля текущей записи
    Sel.TypeText(t1);
    //Переходим к следующей ячейке таблицы
    WA.Selection.MoveRight(12);
    Sel.TypeText(t2);
    WA.Selection.MoveRight(12);
    Sel.TypeText(t3);
    WA.Selection.MoveRight(12);
}
WD.SaveAs("D:\\lolkin.docx");
 
 
function GetFiles (searchpath, fls)
{
    var FSO, Path, Fold, subFold, allfiles, pushed;
    FSO = WScript.CreateObject("Scripting.FileSystemObject");
// получаем доступ к каталогу
    Fold = FSO.GetFolder(searchpath);
//список файлов в каталоге
    allfiles=Fold.Files;
//список подкаталогов
    subFold=Fold.SubFolders;
//цикл по всем файлам в каталоге
    for(var fl = new Enumerator(allfiles); !fl.atEnd(); fl.moveNext()) {
//если дата создания/модификации файла соответствует критерию поиска, занесем имя в массив
WScript.Echo(fl.item().Type);
        if(fl.item().Type==temp){
        WScript.Echo("норм");
            pushed=fls.push(fl.item());
        }
    }
//цикл по всем подкаталогам
    for(var f = new Enumerator(subFold); !f.atEnd(); f.moveNext()) {
        GetFiles(f.item(),fls);
    }
}
0
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,803
Записей в блоге: 16
17.12.2013, 23:16 #3
По-моему, очень даже ничего так скрипт.
Единственное, что, если Вам нужно проверять маску для файла, следует использовать метод match:
Javascript
1
if (fl.item().Name.match(temp))
тогда в temp можно будет подставлять что-то наподобие: a*.*.jpg

Цитата Сообщение от skiff2140 Посмотреть сообщение
но сам скрипт нужно запускать через командную строку, а там не работает
А какую ошибку пишет и на какой строке?
0
skiff2140
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 5
18.12.2013, 14:09  [ТС] #4
Откуда у строки методы? скинь если не трудно где можно почитать про этот метод .Match

Добавлено через 19 минут
все посмотрел разобрался но if не работает с моей функцией

Javascript
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// Объявляем переменные
var i, n, objArgs, s, args, files, dt, fpath; 
// Создаем объект WshArguments
objArgs = WScript.Arguments;  
// Определяем общее количество аргументов
n = objArgs.Count();
args = new Array(n);
// цикл по коллекции аргументов
for (i=0; i <= n-1; i++){
    // Записываем в массив
    args[i] = objArgs(i); 
}
fpath=args[0];//путь поиска файлов
files=new Array();
//вызываем функцию поиска файлов, включая подпапки
GetFiles(fpath,files);
 
//вывод в ворд
//путь к шаблону
var PathTempl="D:\\Games\\lol.dotx"
//создаем объект Application
var WA=WScript.CreateObject("Word.Application");
//создаем новый документ (шаблон)
var WD=WA.Documents.Add(PathTempl);
//делаем окно Winword видимым
WA.Visible=true;
//максимизируем окно Winword
WA.WindowState=1;
//Получаем ссылку на объект Selection
var Sel=WA.Selection;
//Устанавливаем размер шрифта 12 пт
Sel.Font.Size=12;
//Переходим к закладке NameF
WD.Bookmarks("NameF").Select();
var t1="",t2="",t3="";
//Печать содержимого полей найденных объектов
for (i=0; i!=files.length; i++){    
    t1=files[i].Name+"";
    t2=files[i].DateCreated+"";
    t3=files[i].Size+"";
    //Печатаем поля текущей записи
    Sel.TypeText(t1);
    //Переходим к следующей ячейке таблицы
    WA.Selection.MoveRight(12);
    Sel.TypeText(t2);
    WA.Selection.MoveRight(12);
    Sel.TypeText(t3);
    WA.Selection.MoveRight(12);
}
WD.SaveAs("D:\\Games\\lolkin.docx");
 
 
function GetFiles (searchpath, fls)
{
    var FSO, Path, Fold, subFold, allfiles, pushed;
    FSO = WScript.CreateObject("Scripting.FileSystemObject");
// получаем доступ к каталогу
    Fold = FSO.GetFolder(searchpath);
//список файлов в каталоге
    allfiles=Fold.Files;
//список подкаталогов
    subFold=Fold.SubFolders;
//цикл по всем файлам в каталоге
    for(var fl = new Enumerator(allfiles); !fl.atEnd(); fl.moveNext()) {
//если дата создания/модификации файла соответствует критерию поиска, занесем имя в массив
//WScript.Echo(fl.item().Type);
    for (i=1; i <= n-1; i++){
            if (fl.item().Name.match(".*")==args[i]){
            WScript.Echo("норм");
                pushed=fls.push(fl.item());
                }
    }
    }
//цикл по всем подкаталогам
    for(var f = new Enumerator(subFold); !f.atEnd(); f.moveNext()) {
        GetFiles(f.item(),fls);
    }
}
1
Eva Rosalene
Male-to-Female
4049 / 1586 / 301
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 2
18.12.2013, 15:49 #5
.match возвращает булевое значение. Не надо сравнивать его с чем-то.
Javascript
1
if (fl.item().Name.match(args[i])){...}
0
skiff2140
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 5
19.12.2013, 08:45  [ТС] #6
все равно не работает
0
skiff2140
1 / 1 / 0
Регистрация: 09.12.2013
Сообщений: 5
25.12.2013, 20:40  [ТС] #7
все кому надо рабочая прога с поиском по маске, но так же надо будет создать шаблон dotx, просто в него результат записывается
Javascript
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// Объявляем переменные
var i, n, objArgs, s, args, files, dt, fpath; 
// Создаем объект WshArguments
objArgs = WScript.Arguments;  
// Определяем общее количество аргументов
n = objArgs.Count();
args = new Array(n);
// цикл по коллекции аргументов
for (i=0; i <= n-1; i++){
    // Записываем в массив
    args[i] = objArgs(i); 
}
fpath=args[1];//путь поиска файлов
files=new Array();
//вызываем функцию поиска файлов, включая подпапки
GetFiles(fpath,files);
 
//вывод в ворд
//путь к шаблону
var PathTempl="F:\\lol.dotx"
//создаем объект Application
var WA=WScript.CreateObject("Word.Application");
//создаем новый документ (шаблон)
var WD=WA.Documents.Add(PathTempl);
//делаем окно Winword видимым
WA.Visible=true;
//максимизируем окно Winword
WA.WindowState=1;
//Получаем ссылку на объект Selection
var Sel=WA.Selection;
//Устанавливаем размер шрифта 12 пт
Sel.Font.Size=12;
//Переходим к закладке NameF
WD.Bookmarks("NameF").Select();
var t1="",t2="",t3="";
//Печать содержимого полей найденных объектов
for (i=0; i!=files.length; i++){    
    t1=files[i]+"";
    t2=files[i].DateCreated+"";
    t3=files[i].Size+"";
    //Печатаем поля текущей записи
    Sel.TypeText(t1);
    //Переходим к следующей ячейке таблицы
    WA.Selection.MoveRight(12);
    Sel.TypeText(t2);
    WA.Selection.MoveRight(12);
    Sel.TypeText(t3);
    WA.Selection.MoveRight(12);
}
WD.SaveAs("F:\\lolkin.docx");
 
 
function GetFiles (searchpath, fls)
{
    var FSO, Path, Fold, subFold, allfiles, pushed;
    FSO = WScript.CreateObject("Scripting.FileSystemObject");
// получаем доступ к каталогу
    Fold = FSO.GetFolder(searchpath);
//список файлов в каталоге                      
    allfiles=Fold.Files;
//список подкаталогов
    subFold=Fold.SubFolders;
//цикл по всем файлам в каталоге
    for(var fl = new Enumerator(allfiles); !fl.atEnd(); fl.moveNext()) {
//если дата создания/модификации файла соответствует критерию поиска, занесем имя в массив
var we = "^"+args[0]+".*\.*.*$"
    RegEx=new RegExp(we,"i");
 
            if (fl.item().Name.match(RegEx)){
            WScript.Echo("норм");
                pushed=fls.push(fl.item());
                }
    
    }
//цикл по всем подкаталогам
    for(var f = new Enumerator(subFold); !f.atEnd(); f.moveNext()) {
        GetFiles(f.item(),fls);
    }
}
0
Dragokas
Эксперт WindowsАвтор FAQ
16922 / 7007 / 851
Регистрация: 25.12.2011
Сообщений: 10,803
Записей в блоге: 16
25.12.2013, 23:29 #8
Цитата Сообщение от skiff2140 Посмотреть сообщение
Откуда у строки методы? скинь если не трудно где можно почитать про этот метод .Match
Она в языке JScript не строка, а объект.
Здесь ищи:
http://www.w3schools.com/jsref/default.asp
http://javascript.ru/manual
http://www.spravkaweb.ru/jscript
http://www.ru-jscript.com/
2
Eva Rosalene
Male-to-Female
4049 / 1586 / 301
Регистрация: 06.01.2013
Сообщений: 4,176
Завершенные тесты: 2
27.12.2013, 12:37 #9
Да, в JS все объекты, даже функции.
1
27.12.2013, 12:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2013, 12:37
Привет! Вот еще темы с решениями:

Удаление папок по маске и по списку
Очень часто бывает необходимо удалять из темпов конкретного пользователя папки...

Удаление файлов из папки по маске
Доброго времени суток, нагуглил скрипт который должен удалять файлы из папки по...

Перемещение файлов по маске с ведением журнала
Здравствуйте уважаемые! Прошу помощи с решением. Пытаюсь написать скрипт со...

Переименования файлов по маске с модальным окном
Добрый день, требуется помощь по созданию следующего скрипта Есть папка с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru