Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Обход каталогов, поиск в них файла и его создание в случае отсутствия (http://forum.oszone.net/showthread.php?t=344428)

pedrosoft 15-03-2020 15:07 2913265

Обход каталогов, поиск в них файла и его создание в случае отсутствия
 
Привет всем!

Прошу помощи в написании bat-скрипт, заранее огромное спасибо!

Есть n-количество каталогов в каталоге ops:
z:\ops\dir01
z:\ops\dir02
z:\ops\dir03
z:\ops\dir0x

Начиная с первого по списку каталога dir01 (в подкаталогах не искать) нужно начать проверку на предмет отсутствия файла .lock

Как только будет найден каталог без файла .lock:
1. остановить поиск
2. создать в найденном каталоге файл .lock
3. запустить программу, дождаться её завершения (думаю использовать start /wait ops.exe) и удалить файл .lock в созданном каталоге
4. если во всех каталогах найден файл .lock - выдать уведомление "пульты заняты" и начать повторный поиск через 1 минуту.

Busla 15-03-2020 16:19 2913291

Вы правда не видите разницу между "помощь в написании" и "напишите мне скрипт под ключ бесплатно"

Iska 15-03-2020 16:34 2913299

pedrosoft, как в реальности именуются:
Цитата:

Цитата pedrosoft
z:\ops\dir01
z:\ops\dir02
z:\ops\dir03
z:\ops\dir0x »

? Каким правилам подчиняется их именование?

Цитата:

Цитата pedrosoft
и удалить файл .lock в созданном каталоге »

В каком таком «созданном каталоге»?

megaloman 15-03-2020 16:48 2913306

Совершенно не указали, какое имя у файла с расширением .lock
Код:

@Echo Off
cls
        Set "BoxIn=Z:\Ops"
        Set "MaskLock=*.lock"
        Set "FileLock=File.Lock"

        Set /A WaitSek=60
        Set Program="D:\Games\5star Free Lines\Lines.exe"

        :Begin
        FOR /F "usebackq delims=" %%d IN (`2^>nul Dir /B /A:D "%BoxIn%"`) DO (
                If Not Exist "%BoxIn%\%%d\%MaskLock%" (
                        cd.>"%BoxIn%\%%d\%FileLock%"
                        %Program%
                        Del "%BoxIn%\%%d\%FileLock%"
                        Exit /B 0
                )
        )
        Echo. &Echo !!! Пульты заняты. Ожидаем новой попытки. Ctrl/C - завершение скрипта
        Timeout %WaitSek%
        GoTo :Begin
Exit /B 0


Iska 15-03-2020 17:36 2913312

Цитата:

Цитата megaloman
какое имя у файла с расширением .lock »

Никакого :).

Busla 15-03-2020 17:39 2913313

Цитата:

Цитата megaloman
Совершенно не указали, какое имя у файла с расширением .lock »

это не расширение
это дэ-факто стандарт именования для служебных файлов в linux и unix

pedrosoft 15-03-2020 19:57 2913321

Спасибо megaloman, это работает.

Цитата:

Цитата Busla
это дэ-факто стандарт именования для служебных файлов в linux и unix »

Не служебных, а скрытых.

Busla 15-03-2020 20:54 2913325

Цитата:

Цитата pedrosoft
Не служебных, а скрытых. »

у вас причинно-следственная связь нарушена

файлы не предназначенные для прямого использования пользователем - служебные

стали так называть служебные файлы потому, что ранние реализации UNIX из-за бага не отображали их пользователю

DJ Mogarych 15-03-2020 21:48 2913328

Busla, чего вы придираетесь? Не с той ноги сегодня встали?


Время: 23:31.

Время: 23:31.
© OSzone.net 2001-