VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Аватара пользователя
pedrosoft

VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение pedrosoft »

Приветствую!



Прошу подсказать, как можно на VBS выполнить обход каталогов, на предмет отсутствия файла file.lock либо его старости, такой структуры:

z:\ops\dir01\lock\

...

z:\ops\dirXX\lock\



Алгоритм такой:

1. Начинаем обход каталогов по указанной структуре (dir01\lock\ - dirXX\lock\)

2. Как только находим каталог без файла file.lock либо с файлом file.lock но датой его создания более 60 минут назад, останавливаем поиск

3. Запускаем из этого каталога bat-скрипт wshShell.Run "cmd.exe /c z:\ops\" & SearchDir & "\start.bat", 0, False (т.е. bat-файл будет лежать на один уровень выше, чем file.lock)

4. Если каталог без файла file.lock не найден, либо файл file.lock создан не позднее 60 минут назад - выводим сообщение WScript.Echo "Пульты заняты"



Буду рад любым советам. Спасибо!
Аватара пользователя
Fors1k

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение Fors1k »

Код на скорую руку. Может и напутал чего, но вроде работает.



Код:

Код: Выделить всё

param(
    $path = 'z:\ops',
    $file = 'file.lock'
)cls
gci $path|foreach{$run={start "$args\start.bat" -WindowStyle h}
if($f = (gi "$($_.FullName)\lock\$file" -ea  0).LastWriteTime){
    if(((Date) - $f).hours  -ne  0){$a = 1;&$run  $_.FullName}}
else{$a=1;&$run $_.FullName}};if($a-ne 1){"Все пульты заняты."}
Аватара пользователя
megaloman

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение megaloman »

VBS

[spoiler]Код:
[/spoiler]

Код: Выделить всё

If Not Pult("z:\ops", "dir", 2, "lock", "file.lock", "start.bat", 3600) Then WScript.Echo "Пульты заняты"
'-------------
Function Pult(DirPre, DirRoot, DirNlen, DirSuff, FileLock, FileBat, OldSec)
    Pult = False
    iii = 10000000
    With CreateObject("Scripting.FileSystemObject")
        For i = iii To iii + 10 ^ DirNlen - 1
            SearchDir = DirRoot + Right(CStr(i), DirNlen)
            dFile = DirPre + "\" + SearchDir + "\" + DirSuff
            If .FolderExists(dFile) Then
                iFile = dFile + "\" + FileLock
                If .FileExists(iFile) Then
                    Pult = DateDiff("s", .GetFile(iFile).DateLastModified, Now) > OldSec
                Else
                    Pult = True
                End If
                If Pult Then
                    ' MsgBox "cmd.exe /c " + DirPre + "\" + SearchDir + "\" + FileBat
                    CreateObject("WScript.Shell").Run "cmd.exe /c """ + DirPre + "\" + SearchDir + "\" + FileBat + """, 0, False"
                    Exit For
                End If
            End If
        Next
    End With
End Function
Аватара пользователя
pedrosoft

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение pedrosoft »

pedrosoft, но у Вас же не Windows XP?




Цитата pedrosoft:



Буду рад любым советам.
VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания




Писать работающие алгоритмы.
Аватара пользователя
pedrosoft

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение pedrosoft »

Дело в том, что уже есть более большой скрипт на VBS и я хотел дополнить его указанным выше функционалом.
Аватара пользователя
pedrosoft

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение pedrosoft »

pedrosoft, что происходит после п.3?




Цитата Fors1k:



Microsoft больше не обновляет VBScript (с 2009 года)
VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания




В реальности — намного раньше. Но это не мешает ему продолжать работать.
Аватара пользователя
Iska

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение Iska »

Fors1k да знаю, но увы так вышло, основная часть кода уже написана на VBS.



Iska после пункта 3 происходит запуск bat-файла, это финальная часть работы VBS.
Аватара пользователя
pedrosoft

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение pedrosoft »

Цитата Iska:



Но это не мешает ему продолжать работать.
VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания




Конечно не мешает, так как
Microsoft оставит его и в будущих выпусках Windows.



Цитата pedrosoft:



увы так вышло, основная часть кода уже написана на VBS.
VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания




Появился повод переписать и остальную часть на PoSh. Еще и сам код сократится раз в 10 Изображение
Аватара пользователя
pedrosoft

Re: VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания

Сообщение pedrosoft »

Цитата Fors1k:



Появился повод переписать и остальную часть на PoSh. Еще и сам код сократится раз в 10
VBS/WSH/JS - Поиск файла в каталогах и сравнение даты его создания




Согласен, но в моем случае придется потратить еще больше времени на переписывание основного кода, который итак был написал по крупицам из интернета)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»