Работа с bat-никами

Ниже представлены различные bat-ники в качестве примера

Запуск программы в отдельном потоке и закрытие консоли сразу:

@echo off
start my.exe
exit

Команда start - отвечает за запуск программы в другом потоке. Если ее не указать, то все будет выполняться в текущем процессе (=> пока не закроем my.exe, консоль не закроется).

Пример bat-ника

@set dir=C:\
@echo off
MD C:\LogDir

rem Some message

:stage0
@If Exist "C:\SomeDir" (
    echo %date% %time% > C:\LogDir\test.log
    tasklist | find /C "some.exe"
    @if errorlevel 1 (
        echo shutdown >> C:\LogDir\some.log
        SHUTDOWN.EXE /r
    goto end
    )
    @If Exist "C:\SomeDir\some.bat" (
        ping -n 60 127.0.0.1 > nul
        call "C:\SomeDir\some.bat" >> C:\LogDir\some.log 
    goto end
    )
    sc config SomeService start= Demand
    sc start SomeService
    sc query SomeService | findstr /C:"STATE" | findstr /C:"RUNNING" > nul
    if %ERRORLEVEL%==0 (
        echo Service SomeService successfully started >> C:\LogDir\some.log
        exit /b
    )
    call "C:\SomeDir\some2.bat" reboot
    goto end
)
Else (
    goto stage1
)

rem Stage 2
:stage1
set /p "x=somestr" > "somefile.bat" < nul
set /p 'x=""somestr""' > "somefile1.bat" < nul
copy "somefile2.bat" "somefile3.bat"

goto end


:error
@If Exist "C:\LogDir" (
    shutdown /r /t 60 /f >>C:\LogDir\some.log
) ELSE (
    mkdir "C:\LogDir"
    shutdown /r /t 60 /f >>C:\LogDir\some.log
)
:end
exit

Last updated