PDA

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


pedrosoft
15-03-2020, 15:07
Привет всем!

Прошу помощи в написании 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
Вы правда не видите разницу между "помощь в написании" и "напишите мне скрипт под ключ бесплатно"

Iska
15-03-2020, 16:34
pedrosoft, как в реальности именуются:
z:\ops\dir01
z:\ops\dir02
z:\ops\dir03
z:\ops\dir0x »
? Каким правилам подчиняется их именование?

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

megaloman
15-03-2020, 16:48
Совершенно не указали, какое имя у файла с расширением .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
какое имя у файла с расширением .lock »
Никакого :).

Busla
15-03-2020, 17:39
Совершенно не указали, какое имя у файла с расширением .lock »
это не расширение
это дэ-факто стандарт именования для служебных файлов в linux и unix

pedrosoft
15-03-2020, 19:57
Спасибо megaloman, это работает.

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

Busla
15-03-2020, 20:54
Не служебных, а скрытых. »
у вас причинно-следственная связь нарушена

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

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

DJ Mogarych
15-03-2020, 21:48
Busla, чего вы придираетесь? Не с той ноги сегодня встали?




© OSzone.net 2001-2012