Компьютерный форум 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=355180)

diablo.att 27-04-2024 13:29 3026789

Запуск программы если папка не пуста
 
Доброго дня!
Подскажите, возможен ли запуск программы если в папке есть файлы… В общем.
Например, проверить каталоги C:\test, D:\Test2. И если здесь есть файл, запустить .exe, если папка пуста — ничего не делать/выключить компьютер.

DJ Mogarych 27-04-2024 18:36 3026800

powershell
Код:

if (dir 'C:\test','D:\Test2') {
    & 'C:\Program Files\7-Zip\7z.exe'
}
else {
    & shutdown.exe /s /f /t 0 /d p:0:0
}

Если "ничего не делать", то уберите блок else {}

megaloman 27-04-2024 19:49 3026806

Код:

@Echo Off &Cls
        Set "Box1=Z:\Soft_Arc"
        Set "Box2=Z:\Soft_Out"
        Set Exe1="notepad.exe"
        Set Exe2=shutdown.exe /s /f /t 30

        >nul 2>&1 DIR /B /A:-D "%Box1%" "%Box2%" && (%Exe1% &GoTo :Continue)
rem        >nul 2>&1 DIR /B /A:-D "%Box1%" "%Box2%" && (Start " " %Exe1% &GoTo :Continue)

        %Exe2% &Exit /B

        :Continue
        Echo Здесь можно  написать продолжение скрипта после запуска 1 программы
Pause
Exit /B

Закомментирован вариант продолжения работы скрипта после запуска первой программы без ожидания ее завершения

diablo.att 27-04-2024 22:46 3026817

Цитата:

Цитата DJ Mogarych
powershell »

Благодарю все работает:)

megaloman,
Ваш вариант тоже работает, но не так, как хотелось, или я где-то ошибся. Хотелось бы, чтобы программа открывалась, если в одной из папках есть файлы.

Немного изменил ваш код на время тестов. Сейчас tools.exe открываются, если файлы есть folder2, а если только folder1, то notepad.exe.

Код:

@Echo Off &Cls
        Set "Box1=F:\folder1"
        Set "Box2=F:\folder2"
        Set Exe1="C:\Test\tools.exe"
        Set Exe2="notepad.exe"
       
rem        >nul 2>&1 DIR /B /A:-D "%Box1%" "%Box2%" && (%Exe1% &GoTo :Continue)
        >nul 2>&1 DIR /B /A:-D "%Box1%" "%Box2%" && (Start " " %Exe1% &GoTo :Continue)

        %Exe2% &Exit /B

Pause
Exit /B

А еще удалил строки:
Код:

: Continue
Echo Здесь можно написать продолжение скрипта, после запуска 1-й программы

чтобы терминал закрывался, после открытия программы

megaloman 28-04-2024 15:10 3026829

Код:

@Echo Off &Cls
        Set "Box1=Z:\Soft_Arc"
        Set "Box2=Z:\Soft_Out"
        Set Exe1="notepad.exe"
        Set Exe2="Calc.exe"        &rem shutdown.exe /s /f /t 30

        Set /A i1=0, i2=0, i12=0
        >nul 2>&1 DIR /B /A:-D "%Box1%" && Set /A i1=1, i12+=1
        >nul 2>&1 DIR /B /A:-D "%Box2%" && Set /A i2=1, i12+=1
rem        iF %i12% Equ 2 (Start " " %Exe1% &Exit /B)
rem        iF %i12% Equ 1 (Start " " %Exe1% &Exit /B)
rem        iF %i12% Equ 0 (Start " " %Exe2% &Exit /B)
        if %i12% GTR 0 (Start " " %Exe1%) Else (Start " " %Exe2%)
Exit /B

В зависимости от значений i1 i2 i12 можно написать запуск программ в любой комбинации наличия файлов

Serguei Kouzmine 28-04-2024 16:06 3026831

Цитата:

Цитата megaloman
В зависимости от »


может быть просто посчитать ?

будет даже короче

diablo.att 28-04-2024 16:53 3026836

megaloman, По первым тестам все хорошо, благодарю!


Время: 05:40.

Время: 05:40.
© OSzone.net 2001-