Hirdetés

Keresés

Új hozzászólás Aktív témák

  • sztanozs
    veterán

    Nagy nehézségek árán sikerült működőképesre varázsolni a progit. :)

    Hogy sikerült? Ugyanebbe a problémába sikerült belelépnem most nekem is, az egyszer definiált változót a program nem akarja felüldefiniálni...

  • Baryka007
    addikt

    Nagy nehézségek árán sikerült működőképesre varázsolni a progit. :)

    Remek :D Már komolyan örülök neki én is :D:D:D

  • sztanozs
    veterán

    Látom elegetek lett belőlem! :D :O

    Nem, csak nincs kedvünk debugolgatni, ráadásul W7-es (vagy 8-as?) gépem sincs itthon...

  • Baryka007
    addikt

    Na még egy utolsó lendületet vettem, és már azt elértem, hogy lefut a loop, viszont most nem lép ki! :D
    Eddig az volt a gond, hogy a fute címkére ha ráugrott az asio után, a tasklist | find nem tudott lefutni abszolút, mert az asio címke letiltotta a winmgmt-t, ezért futott le csak egyszer.
    Most gyönyörűen mindig lefut az asio, viszont, ha kilépek a foobar-ból, azután is 0 marad! a tasklist | find errorlevel értéke, de miért? :F Ha ez meg lenne oldva, akkor nagyon jó lenne.
    A fute címke kivételével mindenhol a neten talált módszerrel elméletileg lenullázom az errolevel értékét, mert máskor nem jó, ha nem 0. De remélem nem ez van valahogy hatással a fute címkére? :F
    Még majd megpróbálom, hogy külön batch-ből. Mt írjak a külön batch-be, a komplett fute címkét?

    Most így néz ki a program:

    @echo off

    sc config Winmgmt start= demand || cmd /c "exit /b 0"
    cmd /c "exit /b 0"

    devcon disable HDAUDIO\FUNC_01* || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    devcon enable USB\Class_01 || cmd /c "exit /b 0
    cmd /c "exit /b 0

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq psxss.exe"') do process -k %%G || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq igfxsrvc.exe"') do process -k %%G || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    for /f "tokens=2" %%G in ('tasklist /nh') do process -a %%G 1 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh') do process -p %%G low 0 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 10
    REM echo Set foobar2000.exe to CPU 1
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011 process -a "foobar2000.exe" 011 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    process -p "foobar2000.exe" realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    echo A process allitgatasok utan az errolevel erteke: %errorlevel%
    pause

    cls

    echo ALLITSD LE AZ MMCSS-T, ha ok, nyomj meg egy gombot...
    pause

    sc config MMCSS start= disabled || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    echo Az MMCSS utan az errolevel erteke: %errorlevel%
    pause

    cls

    echo asio realtime beállítás minden egyes gombnyomásra
    pause
    goto fute

    :fute

    REM if exist Log.txt DEL Log.txt
    REM cmd /c "exit /b 0
    sc config Winmgmt start= demand || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    tasklist | find "foobar2000.exe"
    REM tasklist /nh /fi "imagename eq foobar2000.exe"

    REM if %errorlevel% == 0 echo >>Log.txt fut
    REM if %errorlevel% == 1 echo >>Log.txt nemfut

    echo A FOOBAR VIZSGALAT UTAN az errolevel erteke: %errorlevel%
    pause
    if %errorlevel% == 0 goto asio
    if %errorlevel% == 1 goto vege

    REM if %errorlevel% == 0 set valami=2
    REM if %errorlevel% == 1 set valami=3
    REM if %valami% == 2 goto asio
    REM if %valami% == 3 goto vege
    REM goto :fute

    REM FOR /f "tokens=1" %%A IN (Log.txt) do (
    REM if %%A == fut goto asio
    REm if %%A == nemfut goto vege)

    :asio

    sc config Winmgmt start= demand || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq ASIOhost32.exe"') do process -p %

    %G realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    sc config Winmgmt start= disabled || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    net stop Winmgmt || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    echo Az asio lefutasa után az errolevel erteke: %errorlevel%

    pause
    REM set errorlevel=0
    REM echo az errorlevel 0-ra valo allitasara valo kiserlet utan
    REM echo az errolevel erteke: %errorlevel% (Nem jó módszer)
    REM pause
    goto fute

    :vege

    echo A VEGERE UGROTTAM!!!!!!!! Az errolevel erteke: %errorlevel%
    pause
    sc config Winmgmt start= demand
    sc config MMCSS start= demand
    devcon disable USB\Class_01*
    devcon enable HDAUDIO\FUNC_01*
    REM net start MMCSS
    REM net start Audiosrv

    exit /b 0

    Próbáld ki amit Sztanszos írt. Ha az nem jön be akkor az errorlevelt ne 0 ra hanem pl 3 ra állítsd és nézd meg úgy. Ha két batch fileból is meg akarod próbálni akkor úgy kéne hogy az egyik batchbe csak ennyi legyen mondjuk ha az első batchnek az a neve hogy elso.bat a másodiknak meg masodik.bat

    -------elso.bat----------------------------------
    tasklist | find "foobar2000.exe"
    PING -n 1 127.0.0.1>nul
    Del test.txt
    echo >> test.txt %errorlevel%
    echo %errorlevel% értéke
    set a=1
    masodik.bat

    A másikba az eldöntéshez meg ezt írod oda:
    -------masodik.bat-----------------------------

    if %a% == 1 goto fute (ezt a program leges leges leg elejére írd oda)


    :FUTE
    if %a% NEQ 1 elso.bat
    FOR /f "tokens=1" %%A IN (test.txt) do (
    if %%A == 0 goto asio
    if %%A == 1 goto vege
    )

    és még annyit tegyél meg hogy az ASIO végére és a VEGE (végére) a goto fute előtt!
    írd ezt oda:
    set a=0

    És ez nagyjából azt csinálja hogy a "masodik.bat" lesz a te főprogramod és ha a fute részre ér akkor először át lép az "elso.bat" fileba ami megvizsgálja hogy fut -e vagy sem... majd visszalép a "masodik.bat" ba és ott a kapott értékekből fut tovább a program... Majd a továbbá futott ciklusok végén nullázza a kapott értéket és vissza ugrik az elso.bat fileba ami megint megvizsgálja... és ez addig megy amig a VEGE ciklusban vége nem lesz a programnak. (Legalábbis elméletileg ezt kéne csinálnia... ) :DDD

  • sztanozs
    veterán

    Na még egy utolsó lendületet vettem, és már azt elértem, hogy lefut a loop, viszont most nem lép ki! :D
    Eddig az volt a gond, hogy a fute címkére ha ráugrott az asio után, a tasklist | find nem tudott lefutni abszolút, mert az asio címke letiltotta a winmgmt-t, ezért futott le csak egyszer.
    Most gyönyörűen mindig lefut az asio, viszont, ha kilépek a foobar-ból, azután is 0 marad! a tasklist | find errorlevel értéke, de miért? :F Ha ez meg lenne oldva, akkor nagyon jó lenne.
    A fute címke kivételével mindenhol a neten talált módszerrel elméletileg lenullázom az errolevel értékét, mert máskor nem jó, ha nem 0. De remélem nem ez van valahogy hatással a fute címkére? :F
    Még majd megpróbálom, hogy külön batch-ből. Mt írjak a külön batch-be, a komplett fute címkét?

    Most így néz ki a program:

    @echo off

    sc config Winmgmt start= demand || cmd /c "exit /b 0"
    cmd /c "exit /b 0"

    devcon disable HDAUDIO\FUNC_01* || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    devcon enable USB\Class_01 || cmd /c "exit /b 0
    cmd /c "exit /b 0

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq psxss.exe"') do process -k %%G || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq igfxsrvc.exe"') do process -k %%G || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    for /f "tokens=2" %%G in ('tasklist /nh') do process -a %%G 1 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh') do process -p %%G low 0 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 10
    REM echo Set foobar2000.exe to CPU 1
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011 process -a "foobar2000.exe" 011 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    process -p "foobar2000.exe" realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    echo A process allitgatasok utan az errolevel erteke: %errorlevel%
    pause

    cls

    echo ALLITSD LE AZ MMCSS-T, ha ok, nyomj meg egy gombot...
    pause

    sc config MMCSS start= disabled || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    echo Az MMCSS utan az errolevel erteke: %errorlevel%
    pause

    cls

    echo asio realtime beállítás minden egyes gombnyomásra
    pause
    goto fute

    :fute

    REM if exist Log.txt DEL Log.txt
    REM cmd /c "exit /b 0
    sc config Winmgmt start= demand || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    tasklist | find "foobar2000.exe"
    REM tasklist /nh /fi "imagename eq foobar2000.exe"

    REM if %errorlevel% == 0 echo >>Log.txt fut
    REM if %errorlevel% == 1 echo >>Log.txt nemfut

    echo A FOOBAR VIZSGALAT UTAN az errolevel erteke: %errorlevel%
    pause
    if %errorlevel% == 0 goto asio
    if %errorlevel% == 1 goto vege

    REM if %errorlevel% == 0 set valami=2
    REM if %errorlevel% == 1 set valami=3
    REM if %valami% == 2 goto asio
    REM if %valami% == 3 goto vege
    REM goto :fute

    REM FOR /f "tokens=1" %%A IN (Log.txt) do (
    REM if %%A == fut goto asio
    REm if %%A == nemfut goto vege)

    :asio

    sc config Winmgmt start= demand || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq ASIOhost32.exe"') do process -p %

    %G realtime 31 || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    sc config Winmgmt start= disabled || cmd /c "exit /b 0"
    cmd /c "exit /b 0
    net stop Winmgmt || cmd /c "exit /b 0"
    cmd /c "exit /b 0

    echo Az asio lefutasa után az errolevel erteke: %errorlevel%

    pause
    REM set errorlevel=0
    REM echo az errorlevel 0-ra valo allitasara valo kiserlet utan
    REM echo az errolevel erteke: %errorlevel% (Nem jó módszer)
    REM pause
    goto fute

    :vege

    echo A VEGERE UGROTTAM!!!!!!!! Az errolevel erteke: %errorlevel%
    pause
    sc config Winmgmt start= demand
    sc config MMCSS start= demand
    devcon disable USB\Class_01*
    devcon enable HDAUDIO\FUNC_01*
    REM net start MMCSS
    REM net start Audiosrv

    exit /b 0

    lehet, hogy setlocal-lal kellene játszani cmd /c "exit /b 0 helyett.

  • Baryka007
    addikt

    Őőő, nem akarok belekötni, de ez "az ellen nem vééééééd" már ránézésre sem, hogy ha egyszer már az errorlevel nem 0 lett, csak más metódussal vizsgálja az értékét.

    Akkor már csak az jut eszembe hogy két batch fileból kéne összehozni a másik batchbe leírod azt a parancsot ami a Log.txt be kiírja hogy fut vagy nemfut a fő batch file meg azt nézi hogy az előző mit írt oda be neki. És így talán a másik batch filenak nem tud bezavarni semmi....

  • Paulo81
    aktív tag

    Őőő, nem akarok belekötni, de ez "az ellen nem vééééééd" már ránézésre sem, hogy ha egyszer már az errorlevel nem 0 lett, csak más metódussal vizsgálja az értékét.

    És tényleg nem működik, vagyis az első loop után a végére megy.
    Azzal, hogy beírtam a fute elejére és az asio végére, hogy
    cmd /c "exit /b 0"
    ezzel már KÉTSZER lefutott az asio, de harmadszorra kilép...Mi ebben a logika? :W

  • Baryka007
    addikt

    Hát az a helyzet, hogy egyszer lefut az asio-s rész, másodszora már a végére ugrik, de nekem sincs fogalmam, hogy miért. Valami más módszer kell.
    Szeretnék még bonyolítani az egészen. :D
    Rögtön indulás után is vizsgálja meg, hogy elindítottam-e a foobar-t. Ha véletlenül nem és úgy akarom futtatni, akkor szólítson fel rá és addig ne induljon el.

    @echo off
    sc config Winmgmt start= demand
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq psxss.exe"') do process -k %%G
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq igfxsrvc.exe"') do process -k %%G
    for /f "tokens=2" %%G in ('tasklist /nh') do process -a %%G 1
    for /f "tokens=2" %%G in ('tasklist /nh') do process -p %%G low 0
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 10
    REM echo Set foobar2000.exe to CPU 1
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
    process -p "foobar2000.exe" realtime 31
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011
    process -a "foobar2000.exe" 011
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011
    cls
    echo mmcss ALLITSD LE AZ MMCSS-T, HA OK NYOMJ MEG EGY GOMBOT!
    pause
    sc config MMCSS start= disabled
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011
    cls
    echo asio realtime beállítás minden egyes gombnyomásra

    pause
    goto fute
    :fute
    if exist Log.txt DEL Log.txt
    tasklist | find "foobar2000.exe"
    if %errorlevel% == 0 echo >>Log.txt fut
    if %errorlevel% == 1 echo >>Log.txt nemfut

    FOR /f "tokens=1" %%A IN (Log.txt) do (
    if %%A == fut goto asio
    if %%A == nemfut goto vege
    )
    goto fute


    :asio
    sc config Winmgmt start= demand
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq ASIOhost32.exe"') do process -p %%G realtime 31
    sc config Winmgmt start= disabled
    net stop Winmgmt

    pause
    goto fute
    :vege
    sc config Winmgmt start= demand
    sc config MMCSS start= demand
    REM net start MMCSS
    REM net start Audiosrv

    Próbáld ki így. Így működnie kell :)

  • Baryka007
    addikt

    Köszi, kipróbálom.

    És ha esetleg a program első felében valamiért 1 lesz az errorlevel, az sem kavarhat be?

    Elvileg a tasklist után változnia kéne az errorlevelnek, szóval ha nem jön be ez a módszer akkor erősen gondolkodnom kell rajta hogy miért NEM változik meg a tasklist után... De van megoldásom már arra a módszerre is :)

  • Baryka007
    addikt

    Na, egy kicsit bonyolódnak a dolgok.Elmondom mit szeretnék:

    Az elején kilő egy-két provesst és minden process alacsony prioritású lesz és egy szálon fut, ez OK.
    A foobart és az audiodg-exe-t realtime-ra rakja és visszarakja két szálra.

    Mivel nekem nem kell az MMCSS mert bekavar a hangba főleg ape-nél, ezért értelemszerűen csinálja dolgokat, az audiodg van, hogy nem indul el vagy leáll, ezért mégegyszer megcsinálja. (Azért kell ezt az MMCSS-sel így csinálni, mert a szolgáltatás nem lehet leállítani, mert a hangvégpontépítő és az audio szolgáltatástól függ, tehát rámegyek a folyamatra a feladatkezelőből éa úgy állítom le. Viszont le kell tiltani, hogy ne induljon el még 1x)
    Szóval még eddig is remekül működik.

    Ezután amikor elindítok egy zenét, az asio-t szintén reíltimera kell állítani, de ezt viszont sajnos minden egyes alkalommal meg kell csinálni. Ha leállítom a zenét az asio32host exe is leáll, és legközelebb sajnos nem indul realtime módban. Ezért egy loop-ot szeretnék, ami minden gombnyomásra megcsinálja. (A winmgmt is bekavar a hangba, azért tiltom le, viszont a process.exe normális futásához kell, :D )
    Na szóval ha külön csak megcsinálom az asio-s loop-ot akkor simán működik, de gondoltam az is épüljön bele, hogy figyelje hogy fut-e a foobar, és ha már bezártam, akkor gombnyomás után hajtsa végre az visszaállító dolgokat a végén.
    Szerintem az errorleveles dolog kavar bele a levesbe, mert miközben szereksztem a batch-es és másodszorra elindítom, akkor már ha nem fut a foobar akkor is futónak érzékeli. Valahogy inicializálni kéne az errorlevelt- de eddig nem sikerült.
    Hálás lennék, ha átnéznéd, hogy mi a bibi ls kipróbálnád - ha tudod.
    :R :R

    @echo off

    sc config Winmgmt start= demand

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq psxss.exe"') do process -k %%G
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq igfxsrvc.exe"') do process -k %%G

    for /f "tokens=2" %%G in ('tasklist /nh') do process -a %%G 1
    for /f "tokens=2" %%G in ('tasklist /nh') do process -p %%G low 0

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 10
    REM echo Set foobar2000.exe to CPU 1

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
    process -p "foobar2000.exe" realtime 31

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011
    process -a "foobar2000.exe" 011

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011

    cls

    echo mmcss ALLITSD LE AZ MMCSS-T, HA OK NYOMJ MEG EGY GOMBOT!

    pause

    sc config MMCSS start= disabled

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011

    cls

    echo asio realtime beállítás minden egyes gombnyomásra

    set errorlevel=0

    pause

    goto fute

    :fute

    tasklist | find "foobar2000.exe"
    if %errorlevel% == 0 goto asio
    if %errorlevel% == 1 goto vege

    :asio

    sc config Winmgmt start= demand
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq ASIOhost32.exe"') do process -p %%G realtime 31
    sc config Winmgmt start= disabled
    net stop Winmgmt

    set errorlevel=0

    pause

    goto fute

    :vege
    sc config Winmgmt start= demand
    sc config MMCSS start= demand
    REM net start MMCSS
    REM net start Audiosrv

    @echo off
    sc config Winmgmt start= demand
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq psxss.exe"') do process -k %%G
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq igfxsrvc.exe"') do process -k %%G
    for /f "tokens=2" %%G in ('tasklist /nh') do process -a %%G 1
    for /f "tokens=2" %%G in ('tasklist /nh') do process -p %%G low 0
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 10
    REM echo Set foobar2000.exe to CPU 1
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
    process -p "foobar2000.exe" realtime 31
    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011
    process -a "foobar2000.exe" 011
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011
    cls
    echo mmcss ALLITSD LE AZ MMCSS-T, HA OK NYOMJ MEG EGY GOMBOT!
    pause
    sc config MMCSS start= disabled
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011
    cls
    echo asio realtime beállítás minden egyes gombnyomásra

    pause
    goto fute
    :fute
    tasklist | find "foobar2000.exe"
    if %errorlevel% == 0 set valami=2
    if %errorlevel% == 1 set valami=3

    if %valami% == 2 goto asio
    if %valami% == 3 goto vege

    :asio
    sc config Winmgmt start= demand
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq ASIOhost32.exe"') do process -p %%G realtime 31
    sc config Winmgmt start= disabled
    net stop Winmgmt

    pause
    goto fute
    :vege
    sc config Winmgmt start= demand
    sc config MMCSS start= demand
    REM net start MMCSS
    REM net start Audiosrv

    Nah elvileg így sehogyan sem zavarhat be az errorlevel a programnak. Próbáld ki így :K

  • Paulo81
    aktív tag

    Na, egy kicsit bonyolódnak a dolgok.Elmondom mit szeretnék:

    Az elején kilő egy-két provesst és minden process alacsony prioritású lesz és egy szálon fut, ez OK.
    A foobart és az audiodg-exe-t realtime-ra rakja és visszarakja két szálra.

    Mivel nekem nem kell az MMCSS mert bekavar a hangba főleg ape-nél, ezért értelemszerűen csinálja dolgokat, az audiodg van, hogy nem indul el vagy leáll, ezért mégegyszer megcsinálja. (Azért kell ezt az MMCSS-sel így csinálni, mert a szolgáltatás nem lehet leállítani, mert a hangvégpontépítő és az audio szolgáltatástól függ, tehát rámegyek a folyamatra a feladatkezelőből éa úgy állítom le. Viszont le kell tiltani, hogy ne induljon el még 1x)
    Szóval még eddig is remekül működik.

    Ezután amikor elindítok egy zenét, az asio-t szintén reíltimera kell állítani, de ezt viszont sajnos minden egyes alkalommal meg kell csinálni. Ha leállítom a zenét az asio32host exe is leáll, és legközelebb sajnos nem indul realtime módban. Ezért egy loop-ot szeretnék, ami minden gombnyomásra megcsinálja. (A winmgmt is bekavar a hangba, azért tiltom le, viszont a process.exe normális futásához kell, :D )
    Na szóval ha külön csak megcsinálom az asio-s loop-ot akkor simán működik, de gondoltam az is épüljön bele, hogy figyelje hogy fut-e a foobar, és ha már bezártam, akkor gombnyomás után hajtsa végre az visszaállító dolgokat a végén.
    Szerintem az errorleveles dolog kavar bele a levesbe, mert miközben szereksztem a batch-es és másodszorra elindítom, akkor már ha nem fut a foobar akkor is futónak érzékeli. Valahogy inicializálni kéne az errorlevelt- de eddig nem sikerült.
    Hálás lennék, ha átnéznéd, hogy mi a bibi ls kipróbálnád - ha tudod.
    :R :R

    @echo off

    sc config Winmgmt start= demand

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq psxss.exe"') do process -k %%G
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq igfxsrvc.exe"') do process -k %%G

    for /f "tokens=2" %%G in ('tasklist /nh') do process -a %%G 1
    for /f "tokens=2" %%G in ('tasklist /nh') do process -p %%G low 0

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 10
    REM echo Set foobar2000.exe to CPU 1

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
    process -p "foobar2000.exe" realtime 31

    REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011
    process -a "foobar2000.exe" 011

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011

    cls

    echo mmcss ALLITSD LE AZ MMCSS-T, HA OK NYOMJ MEG EGY GOMBOT!

    pause

    sc config MMCSS start= disabled

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -p %%G realtime 31
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq audiodg.exe"') do process -a %%G 011

    cls

    echo asio realtime beállítás minden egyes gombnyomásra

    set errorlevel=0

    pause

    goto fute

    :fute

    tasklist | find "foobar2000.exe"
    if %errorlevel% == 0 goto asio
    if %errorlevel% == 1 goto vege

    :asio

    sc config Winmgmt start= demand
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq ASIOhost32.exe"') do process -p %%G realtime 31
    sc config Winmgmt start= disabled
    net stop Winmgmt

    set errorlevel=0

    pause

    goto fute

    :vege
    sc config Winmgmt start= demand
    sc config MMCSS start= demand
    REM net start MMCSS
    REM net start Audiosrv

    Tehát a lényeg, hiogy ha az asio-s loop hibát is dobna ki, akkor is menjen elölről a loop, amíg be nem záródik a foobar. Remélem érthető. :)
    A set errolevel=0 nem működik. :(
    Még ezzel próbálkoztam netes keresgélés után:
    FOR %%A IN (1 10 100) DO SET ERR%%A=0
    de nem jó. :(
    Meg az sem, hogy minden parancs után odaírom, hogy > nul, akkor még a parancsok sem működnek normálisan.

  • sztanozs
    veterán

    @echo off

    REM :eleje

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do

    echo !!!!!!!!!

    REM SET van
    REM %van%=%%G

    REM IF {%van%} EXIST

    REM (goto eleje)

    REM ELSE (goto vege)

    REM :vege

    REM echo %van%

    pause

    Már mindennel próbálkoztam, de a for ciklussal van a baj. Az a vicces, hogy azt egy működő batch fájlból másoltam ki. :F :F
    A tasklist-es parancsot beírva kézileg is működik, nem értem... :S :S

    @echo off
    :teszt_eleje
    for /F "tokens=1,*" %%G in ('tasklist /nh /fi "imagename eq iexplore.exe"') do (
    set van=1
    )
    if defined van (
    echo "fut az explorer..."

    REM SLEEP 10:
    PING -n 11 127.0.0.1>nul

    goto teszt_eleje
    ) else (
    echo "NEM fut az explorer"

    REM SLEEP 10:
    PING -n 11 127.0.0.1>nul

    goto teszt_eleje
    )

    Nincs fent nálam a foobar - IE-vel tesztetem - de tetszőlegesen módosítható...

  • Paulo81
    aktív tag

    Ezt is megpróbáltam, de nem működik:

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do

    set van=letezik

    if %van% exist

    goto eleje

    ELSE goto vege

    @echo off

    REM :eleje

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do

    echo !!!!!!!!!

    REM SET van
    REM %van%=%%G

    REM IF {%van%} EXIST

    REM (goto eleje)

    REM ELSE (goto vege)

    REM :vege

    REM echo %van%

    pause

    Már mindennel próbálkoztam, de a for ciklussal van a baj. Az a vicces, hogy azt egy működő batch fájlból másoltam ki. :F :F
    A tasklist-es parancsot beírva kézileg is működik, nem értem... :S :S

  • Paulo81
    aktív tag

    Sziasztok!

    Szeretnék egy olyan batch file-t ami megnézi, hogy fut-e a foobar és akkor csináln valamit, de ha nem fut, akkor a vége cimkére ugrik és befejeződik.

    IF
    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"')=true

    goto csinald

    ELSE goto vege

    pause
    :vege

    Ezt tudtam összehozni, de nem működik, szintaktikai hiba. Mit rontottam el?
    :R :R

    Ezt is megpróbáltam, de nem működik:

    for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do

    set van=letezik

    if %van% exist

    goto eleje

    ELSE goto vege

Új hozzászólás Aktív témák

Hirdetés