Hirdetés

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

  • bepken
    veterán

    WMIC computersystem where name='TEST-PC' rename "!name:TEST-PC=%class%-%pc%!"

    Próbáld meg így is... talán így lefut mindig ... :DDD

    dehát a névnek így is fixnek kell lennie, nem?

    sajnos továbbra is azt írja ki, mint az én verziómban: "No Instance(s) Available." (ha csak nem TEST-PC a neve)

  • Baryka007
    addikt

    tényleg ennyiből áll az a rész, ahogy fentebb írtam:

    ECHO írd be a terem számát!
    ECHO.
    set /p class=Terem száma:

    cls
    ECHO írd be a gép számát!
    ECHO.
    set /p pc=Gép száma:

    WMIC computersystem where name='TEST-PC' call rename name='%class%-%pc%'

    úgy oldottam kerültem meg a problémát, hogy csináltam egy klónt, ahol a gép neve TEST-PC

    WMIC computersystem where name='TEST-PC' rename "!name:TEST-PC=%class%-%pc%!"

    Próbáld meg így is... talán így lefut mindig ... :DDD

  • sgx
    tag

    Sziasztok!

    Adott ez a kis programreszlet:

    @Echo.
    @copy %instpath%\Idoszinkron\BATCH\\timeserv.exe %Windir%\system32
    @if %errorlevel% EQU 0 echo TimeServ.exe masolasa megtortent!
    @if %errorlevel% NEQ 0 echo !!!TimeServ.exe NEM tortent meg!!!
    @Echo.

    A batch utáni 2 "\\" jel mit takar? az eleresi uthoz nem lenne eleg csak "\"? igy nem syntax error-ra kéne futnia a programnak?

  • bepken
    veterán

    a rename ciklust / program részletet be tudnád ide másolni nekünk ? Szerintem ott kell valami kapcsolót berakni hogy a felülírást rákérdezés nélkül automatikusan megcsinálja, ebben biztos vagyok! :)

    tényleg ennyiből áll az a rész, ahogy fentebb írtam:

    ECHO írd be a terem számát!
    ECHO.
    set /p class=Terem száma:

    cls
    ECHO írd be a gép számát!
    ECHO.
    set /p pc=Gép száma:

    WMIC computersystem where name='TEST-PC' call rename name='%class%-%pc%'

    úgy oldottam kerültem meg a problémát, hogy csináltam egy klónt, ahol a gép neve TEST-PC

  • Baryka007
    addikt

    amit szeretnék:
    először kérjen be egy számot, ez a "terem száma"
    majd kérjen be egy újabb számot, ez a "gép száma"
    végül ezt a két változót fűzze össze kötőjellel elválasztva (pl.: 130-12)

    eddig el is jutok, igazából a gépnevet is módosítja a számomra megfelelő formátumban. csak gondoltam van arra is mód, hogy ne figyelje az aktuális gépnevet, egyszerűen csak írja felül azzal, amit korábban bekért.
    (mint pl.: egy ip-cím módosításakor)
    ebben az esetben tudnám használni korábban konfigurált gépeken is, ahol még nincs egységes gépnév. (ergo mindig külön be kéne kérni azt is)

    a rename ciklust / program részletet be tudnád ide másolni nekünk ? Szerintem ott kell valami kapcsolót berakni hogy a felülírást rákérdezés nélkül automatikusan megcsinálja, ebben biztos vagyok! :)

  • bepken
    veterán

    én a helyedbe egy külső txt fileba írnám ki a két változót majd egy for /f es ciklussal olvasnám vissza őket %%A és %%B néven

    Bár nem egészen tiszta hogy mit is akarsz csinálni

    amit szeretnék:
    először kérjen be egy számot, ez a "terem száma"
    majd kérjen be egy újabb számot, ez a "gép száma"
    végül ezt a két változót fűzze össze kötőjellel elválasztva (pl.: 130-12)

    eddig el is jutok, igazából a gépnevet is módosítja a számomra megfelelő formátumban. csak gondoltam van arra is mód, hogy ne figyelje az aktuális gépnevet, egyszerűen csak írja felül azzal, amit korábban bekért.
    (mint pl.: egy ip-cím módosításakor)
    ebben az esetben tudnám használni korábban konfigurált gépeken is, ahol még nincs egységes gépnév. (ergo mindig külön be kéne kérni azt is)

  • Baryka007
    addikt

    így sikerült megoldani:

    set /p class=Terem száma:

    ...

    set /p pc=Gép száma:

    ....

    WMIC computersystem where name='TEST-PC' call rename name='%class%-%pc%'

    viszont az aktuális név így muszáj, hogy fix legyen (ami jelenleg nem probléma, mert éppen klónozás előtt vagyok)
    de továbbra is érdekelne, hogy össze lehet e hozni két változót egy változóba

    én a helyedbe egy külső txt fileba írnám ki a két változót majd egy for /f es ciklussal olvasnám vissza őket %%A és %%B néven

    Bár nem egészen tiszta hogy mit is akarsz csinálni

  • bepken
    veterán

    megoldódott közben, alaposan benéztem...a codepage kavart be - ha jól gondolom. a script-ben 1252 szerepelt, az ankelpad-ban pedig 852-essel mentettem el mindegyiket. aztán gondolom ez futtatáskor már nem igazán tetszett neki. aztán hogy mi csúszott el annyira, hogy épp az ip címet nem írta ki a netsh paranccsal....
    lényeg, hogy miután átjavítottam 852-re a script-ben is, azután már jól működik :)

    na de van még kérdésem bőven, remélem nem gond :D

    szóval hogyan tudnám két változó értékét összefűzni, majd ezt harmadik változóként alkalmazni?
    "terem száma"-"gép száma" >> ezeket összefűzve állna össze a gép neve, például "120-13"

    a következő lépésben pedig ez alapján az érték alapján szeretném módosítani a gép nevét.
    ahogy olvasgattam, nem igazán van mód arra, hogy egyszerűen csak lecserélje, mert be kell írni a jelenlegi gép nevet is....

    így sikerült megoldani:

    set /p class=Terem száma:

    ...

    set /p pc=Gép száma:

    ....

    WMIC computersystem where name='TEST-PC' call rename name='%class%-%pc%'

    viszont az aktuális név így muszáj, hogy fix legyen (ami jelenleg nem probléma, mert éppen klónozás előtt vagyok)
    de továbbra is érdekelne, hogy össze lehet e hozni két változót egy változóba

  • bepken
    veterán

    ha vársz kicsit a két parancs között, akkor is ugyanez a jelenség?

    megoldódott közben, alaposan benéztem...a codepage kavart be - ha jól gondolom. a script-ben 1252 szerepelt, az ankelpad-ban pedig 852-essel mentettem el mindegyiket. aztán gondolom ez futtatáskor már nem igazán tetszett neki. aztán hogy mi csúszott el annyira, hogy épp az ip címet nem írta ki a netsh paranccsal....
    lényeg, hogy miután átjavítottam 852-re a script-ben is, azután már jól működik :)

    na de van még kérdésem bőven, remélem nem gond :D

    szóval hogyan tudnám két változó értékét összefűzni, majd ezt harmadik változóként alkalmazni?
    "terem száma"-"gép száma" >> ezeket összefűzve állna össze a gép neve, például "120-13"

    a következő lépésben pedig ez alapján az érték alapján szeretném módosítani a gép nevét.
    ahogy olvasgattam, nem igazán van mód arra, hogy egyszerűen csak lecserélje, mert be kell írni a jelenlegi gép nevet is....

  • Csontikka
    aktív tag

    adott egy Ethernet nevezetű helyi kapcsolat. a következő paranccsal küzdök:

    netsh interface ip set address name="Ethernet" static 192.168.2.%ip% 255.255.255.0 192.168.2.1 1
    ahol ugye "Ethernet" a kapcsolat neve, az %ip% a változó, amit korábban kell megadni

    le is fut, be is állítja a megfelelő címeket, viszont ezután megy tovább a script, a netsh interface ip show config paranccsal lekérdezem a konfigot, de valamiért éppen csak az IP címet nem mutatja...
    ha mauálisan kérdezem le, akkor viszont ott van. na ezt magyarázza el valaki :D

    ha vársz kicsit a két parancs között, akkor is ugyanez a jelenség?

  • bepken
    veterán

    adott egy Ethernet nevezetű helyi kapcsolat. a következő paranccsal küzdök:

    netsh interface ip set address name="Ethernet" static 192.168.2.%ip% 255.255.255.0 192.168.2.1 1
    ahol ugye "Ethernet" a kapcsolat neve, az %ip% a változó, amit korábban kell megadni

    le is fut, be is állítja a megfelelő címeket, viszont ezután megy tovább a script, a netsh interface ip show config paranccsal lekérdezem a konfigot, de valamiért éppen csak az IP címet nem mutatja...
    ha mauálisan kérdezem le, akkor viszont ott van. na ezt magyarázza el valaki :D

  • PumpkinSeed
    addikt

    Hogyan tudom a rendszer időt lekérdezni egy batch fileban?

    Elég lenne, csak az órát lekérdezni, vagyis inkább jobb is lenne. :)

    Solved

  • PumpkinSeed
    addikt

    Hogyan tudom a rendszer időt lekérdezni egy batch fileban?

    Elég lenne, csak az órát lekérdezni, vagyis inkább jobb is lenne. :)

  • bepken
    veterán

    a következő lépés - amit kigondoltam - az volna, hogy ezeket a scripteket egyetlen futtatható állományba pakoljam össze.
    most épp egy bat2exe nevezetű programmal oldottam meg mindezt, de nem vagyok benne biztos, hogy ez a módszer teljesen biztonságos... (tekintve, hogy az avira már kétszer beriasztott, mióta a "complie" gombbal molyolok :D )

    van erre a célra jól bevált program/módszer?
    sokkal kényelmesebb és esztétikusabb volna az egész, ha ezt a lépést sikerülne valahogy összehoznom. sőt a legkényelmesebb az volna, ha én szabhatnám meg, hogy hová csomagolja ki ezeket a fájlokat (amolyan installer "stílusban")

  • bepken
    veterán

    set /p choice= - sorral? vagy hogyan tudom ezt megtenni?

    betettem a set "choice=" sort mindegyik script elejére. ez úgy tűnik, meg is oldotta a problémát :)

    köszi szépen a segítséget! :R

  • bepken
    veterán

    töröld a %choice% értékét visszatéréskor.

    set /p choice= - sorral? vagy hogyan tudom ezt megtenni?

  • cigam
    titán

    sziasztok!

    úgy 1 hete villant át az agyamon, hogy azt a rengeteg előre megírt script-et (batch és powershell), amivel a melóhelyen folyamatosan teleszemetelem az egyik mappámat, talán össze lehetne rakni egy "programba".

    eddig egész sok mindenre rájöttem különböző leírások alapján, de van egy olyan hibaforrás, amit sehogy sem sikerül kiküszöbölnöm...

    a kérdéses program rész(let):

    set /p choice=Válassz! -
    ECHO.
    if '%choice%'=='0' call MAIN.bat
    if '%choice%'=='1' call ip_BP.bat
    if '%choice%'=='2' call dom_BP.bat
    if '%choice%'=='' goto start
    if not '%choice%'=='1'2'3' goto start

    amikor választok egy számot, behívja az adott az adott fájlt. ha nem választok semmit vagy nem a felsorolt opciók közül választok, akkor visszamegy az elejére. eddig rendben is van.

    viszont! hogyha mondjuk a "dom_BP.bat" fájlból visszalépek a "MAIN.bat" fájlba és "véletlenül" nyomok egy entert, akkor a legutóbb választott karakternek megfelelően viselkedik.
    ez nem egy hatalmas probléma, de okozhat kellemetlenségeket a későbbiekben, mert elég szerteágazó kis programnak tervezem.
    (például legutóbb a "0 - vissza" opciót választottam, véletlenül újra lenyomom az entert és ekkor csinál valami hülyeséget)

    eléggé laikus vagyok a témában (gondolom ez le is jött...) de remélem, nagyjából érthető, mi is volna a problémám.

    előre is köszönöm a segítséget, tanácsokat :)

    töröld a %choice% értékét visszatéréskor.

  • bepken
    veterán

    sziasztok!

    úgy 1 hete villant át az agyamon, hogy azt a rengeteg előre megírt script-et (batch és powershell), amivel a melóhelyen folyamatosan teleszemetelem az egyik mappámat, talán össze lehetne rakni egy "programba".

    eddig egész sok mindenre rájöttem különböző leírások alapján, de van egy olyan hibaforrás, amit sehogy sem sikerül kiküszöbölnöm...

    a kérdéses program rész(let):

    set /p choice=Válassz! -
    ECHO.
    if '%choice%'=='0' call MAIN.bat
    if '%choice%'=='1' call ip_BP.bat
    if '%choice%'=='2' call dom_BP.bat
    if '%choice%'=='' goto start
    if not '%choice%'=='1'2'3' goto start

    amikor választok egy számot, behívja az adott az adott fájlt. ha nem választok semmit vagy nem a felsorolt opciók közül választok, akkor visszamegy az elejére. eddig rendben is van.

    viszont! hogyha mondjuk a "dom_BP.bat" fájlból visszalépek a "MAIN.bat" fájlba és "véletlenül" nyomok egy entert, akkor a legutóbb választott karakternek megfelelően viselkedik.
    ez nem egy hatalmas probléma, de okozhat kellemetlenségeket a későbbiekben, mert elég szerteágazó kis programnak tervezem.
    (például legutóbb a "0 - vissza" opciót választottam, véletlenül újra lenyomom az entert és ekkor csinál valami hülyeséget)

    eléggé laikus vagyok a témában (gondolom ez le is jött...) de remélem, nagyjából érthető, mi is volna a problémám.

    előre is köszönöm a segítséget, tanácsokat :)

  • Baryka007
    addikt

    közben sikerült megoldanom

    set /p a közvetlen.... de külső fájlból is tudsz adatot bekérni így:

    for /f "tokens=1,2 delims=;" %%A in (VALAMI.TXT) do (

    )

    két zárójel között meg azt írsz amit akarsz ez adatbázis szerűen olvas be akármit a programba. Az én példámnál ez úgy működik hogy két mező van (oszlop) majd a rekordokon (sorokon)egyesével végig megy a program amiket úgy kérsz le ha pl az első mezőből akarsz kiolvasni hogy %%A a második meg %%B valamint a fájlban ; ilyen jellel kell elválasztani a két számot, vagy betűket szavakat stb stb....

  • O$zkł
    aktív tag

    Sziasztok
    szeretnék írni egy egyszerű batch programot ami a felhasználótól kér be egy számot, majd ezt felhasználja a továbbiakban, ezt az adatbekérést hogy tudom megvalósítani ?

    közben sikerült megoldanom

  • O$zkł
    aktív tag

    Sziasztok
    szeretnék írni egy egyszerű batch programot ami a felhasználótól kér be egy számot, majd ezt felhasználja a továbbiakban, ezt az adatbekérést hogy tudom megvalósítani ?

  • Csontikka
    aktív tag

    Üdv!
    Remélem jó helyen járok!

    Minden gép indításnál egy ideje ez az idegesítő üzenet jelenik meg. Hogy lehet eltüntetni? Mi okozza ezt?
    Win7 64bit

    Ha jól emlékszem IP címet néztem meg azóta csinálja ezt

    szerintem inkább itt próbálkozz:

    egyébként vagy installáltál valamit ami lefut indításkor, vagy benyeltél valami vírust.
    Ha érzel ehhez elég erőd, ezzel a progival valószínüleg elég hamar megtalálható a hibás bejegyzés.
    kis infó hozzá

  • Tailor21
    csendes tag

    Üdv!
    Remélem jó helyen járok!

    Minden gép indításnál egy ideje ez az idegesítő üzenet jelenik meg. Hogy lehet eltüntetni? Mi okozza ezt?
    Win7 64bit

    Ha jól emlékszem IP címet néztem meg azóta csinálja ezt

  • looser
    addikt

    output dir végére kell lezáró \ :)

    if WScript.Arguments.Count() <> 2 Then
    wscript.echo "Usage:" & vbcrlf & "splitvcf.vbs filename output_dir"
    wscript.quit -1
    End If
    filename = WScript.Arguments(0)
    odir = WScript.Arguments(1)

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename)

    id = 0
    Do Until f.AtEndOfStream
    line = f.ReadLine
    If Trim(line) = "BEGIN:VCARD" Then
    startwrite = true
    Set fo = fso.CreateTextFile(odir & Right("00000" & id, 6) & ".vcf", True)
    End If
    If startwrite Then
    fo.Write line & vbCrLf
    End If
    If Trim(line) = "END:VCARD" Then
    startwrite = false
    fo.Close
    id = id + 1
    End If
    Loop
    f.Close

    Anélkül is megcsinálta, csak "all0####.vcf lett belőle :-)
    Egyszerűen szuper, köszönet érte, nagyon jó fej vagy! :-))

  • sztanozs
    veterán

    Valami gondja van a 4. sorral...

    Így indítom:

    splitvcf.vbs d:\htc\a.vcf d:\htc\all

    A mappanevek és a filenevek is pontosak.

    Azt pedig el is felejtettem mondani, hogy nagyon köszönöm, hogy foglalkozol a problémával! :K :R

    output dir végére kell lezáró \ :)

    if WScript.Arguments.Count() <> 2 Then
    wscript.echo "Usage:" & vbcrlf & "splitvcf.vbs filename output_dir"
    wscript.quit -1
    End If
    filename = WScript.Arguments(0)
    odir = WScript.Arguments(1)

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename)

    id = 0
    Do Until f.AtEndOfStream
    line = f.ReadLine
    If Trim(line) = "BEGIN:VCARD" Then
    startwrite = true
    Set fo = fso.CreateTextFile(odir & Right("00000" & id, 6) & ".vcf", True)
    End If
    If startwrite Then
    fo.Write line & vbCrLf
    End If
    If Trim(line) = "END:VCARD" Then
    startwrite = false
    fo.Close
    id = id + 1
    End If
    Loop
    f.Close

  • looser
    addikt

    A kód első sorában kell beállítani, hogy hol a fájl - át kell íni a "-ök között. A kimeneti könyvtárak később kell a kódba beírni, de mindjárt megmódosítom neked :)

    Ne fáradj vele, így is szuper, köszönöm szépen :D :R

    #576) sztanozs: máris próbálom :-)

  • sztanozs
    veterán

    Valami gondja van a 4. sorral...

    Így indítom:

    splitvcf.vbs d:\htc\a.vcf d:\htc\all

    A mappanevek és a filenevek is pontosak.

    Azt pedig el is felejtettem mondani, hogy nagyon köszönöm, hogy foglalkozol a problémával! :K :R

    A kód első sorában kell beállítani, hogy hol a fájl - át kell íni a "-ök között. A kimeneti könyvtárak később kell a kódba beírni, de mindjárt megmódosítom neked :)

  • looser
    addikt

    splitvcf.vbs

    filename = "C:\Temp\textfile"

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename)

    id = 0
    Do Until f.AtEndOfStream
    line = f.ReadLine
    If Trim(line) = "BEGIN:VCARD" Then
    startwrite = true
    Set fo = fso.CreateTextFile("C:\Temp\" & id & ".vcf", True)
    End If
    If startwrite Then
    fo.Write line & vbCrLf
    End If
    If Trim(line) = "END:VCARD" Then
    startwrite = false
    fo.Close
    id = id + 1
    End If
    Loop
    f.Close

    Valami gondja van a 4. sorral...

    Így indítom:

    splitvcf.vbs d:\htc\a.vcf d:\htc\all

    A mappanevek és a filenevek is pontosak.

    Azt pedig el is felejtettem mondani, hogy nagyon köszönöm, hogy foglalkozol a problémával! :K :R

  • sztanozs
    veterán

    Sziasztok! Valaki írna nekem egy olyan batchet, amely egy textfilet (első paraméter) feldarabol és a darabjait növekvő számsorba rendezve leteszi egy tetszőleges mappába (második paraméter) vagy akár ugyanoda leteszi *.vcf néven? Egy vCard-ot szeretnék darabolni, de órák óta küzdök és egy rakat alkalmazást kipróbáltam, de mindegyik elhasalt ezen a "feladaton". Maga a .vcf file (névjegyzék) egy elhalt androidos telóról való, amit egy Nokia 3110-be szeretnék feltölteni, de a PC Suite az első nevet hajlandó csak betölteni. 1500+ nevet tartalmaz a vcard, így nem szeretném egyenként szétdarabolni...
    Nagy köszönet a segítségért! :R

    Apropó: a BEGIN:VCARD sor előtt és az END:VCARD sor után kellene vágnia.

    splitvcf.vbs

    filename = "C:\Temp\textfile"

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename)

    id = 0
    Do Until f.AtEndOfStream
    line = f.ReadLine
    If Trim(line) = "BEGIN:VCARD" Then
    startwrite = true
    Set fo = fso.CreateTextFile("C:\Temp\" & id & ".vcf", True)
    End If
    If startwrite Then
    fo.Write line & vbCrLf
    End If
    If Trim(line) = "END:VCARD" Then
    startwrite = false
    fo.Close
    id = id + 1
    End If
    Loop
    f.Close

  • looser
    addikt

    Sziasztok! Valaki írna nekem egy olyan batchet, amely egy textfilet (első paraméter) feldarabol és a darabjait növekvő számsorba rendezve leteszi egy tetszőleges mappába (második paraméter) vagy akár ugyanoda leteszi *.vcf néven? Egy vCard-ot szeretnék darabolni, de órák óta küzdök és egy rakat alkalmazást kipróbáltam, de mindegyik elhasalt ezen a "feladaton". Maga a .vcf file (névjegyzék) egy elhalt androidos telóról való, amit egy Nokia 3110-be szeretnék feltölteni, de a PC Suite az első nevet hajlandó csak betölteni. 1500+ nevet tartalmaz a vcard, így nem szeretném egyenként szétdarabolni...
    Nagy köszönet a segítségért! :R

    Apropó: a BEGIN:VCARD sor előtt és az END:VCARD sor után kellene vágnia.

  • PumpkinSeed
    addikt

    van a dosbox.conf-ban egy [autoexec] rész

    az alá írd be amit el szeretnél indítani.

    Win7 alatt ezt a filet az alábbi mappában találod:
    c:\Users\%USER%\AppData\Local\DOSBox\

    Ezt nem találtam. :) Köszönöm. :R

  • Csontikka
    aktív tag

    Csináltam egy autoexec.bat-ot benne ami kell beletettem a dosbox mappájába C/progfájl/dosbox... Nem megy. Csináltam egy autoexec mappát beletettem nem megy. Csináltam egy cdrive mappát beletettem nem megy.

    A DOSBox options.bat-ba beleírtam, hogy autoexec.conf-t indítsa el, majd azt létrehoztam, de az se megy. Én vagyok ilyen hülye?

    van a dosbox.conf-ban egy [autoexec] rész

    az alá írd be amit el szeretnél indítani.

    Win7 alatt ezt a filet az alábbi mappában találod:
    c:\Users\%USER%\AppData\Local\DOSBox\

  • PumpkinSeed
    addikt

    2 megolás van, vagy a "belső" c:\autoexec.bat-ba rakod bele a batch azon részét aminek "belül" kell végrehajtónia.

    link

    2. megoldás, hogy készítesz egy config filet és azzal hívod meg a dosbox-ot.

    első körben ezeket tanulányozd át. a 3.ban amit te szeretnél, de az első kettő is kellhet a megértéséhez:

    1
    2
    3

    Csináltam egy autoexec.bat-ot benne ami kell beletettem a dosbox mappájába C/progfájl/dosbox... Nem megy. Csináltam egy autoexec mappát beletettem nem megy. Csináltam egy cdrive mappát beletettem nem megy.

    A DOSBox options.bat-ba beleírtam, hogy autoexec.conf-t indítsa el, majd azt létrehoztam, de az se megy. Én vagyok ilyen hülye?

  • Csontikka
    aktív tag

    Hogy micsoda? Ezt nem értem. :(

    2 megolás van, vagy a "belső" c:\autoexec.bat-ba rakod bele a batch azon részét aminek "belül" kell végrehajtónia.

    link

    2. megoldás, hogy készítesz egy config filet és azzal hívod meg a dosbox-ot.

    első körben ezeket tanulányozd át. a 3.ban amit te szeretnél, de az első kettő is kellhet a megértéséhez:

    1
    2
    3

  • Csontikka
    aktív tag

    Működik.

    Viszont van egy ilyenem:

    cd C:\Program Files (x86)\DOSBox-0.74
    DOSBox.exe
    echo SZAR!
    mount G: E:\bc
    G:
    cd bc
    cd binmo
    bc

    Ez megnyitja a DOS-box-ot, majd elhal. A DOSBox nem hajt végre semmit. Hogyan lehetne ezt megcsinálni?

    úgy, hogy ezt a részt a dosbox autoexec.bat-jába rakod:

    mount G: E:\bc
    G:
    cd bc
    cd binmo
    bc

  • PumpkinSeed
    addikt

    Így próbáltad már?

    >> valami.txt systeminfo | find /i "Operßciˇs rendszer neve"

    Így ki írja szöveges dokumentumba ( elvileg ékezetes betűkkel ) bár még nem teszteltem...

    Működik.

    Viszont van egy ilyenem:

    cd C:\Program Files (x86)\DOSBox-0.74
    DOSBox.exe
    echo SZAR!
    mount G: E:\bc
    G:
    cd bc
    cd binmo
    bc

    Ez megnyitja a DOS-box-ot, majd elhal. A DOSBox nem hajt végre semmit. Hogyan lehetne ezt megcsinálni?

  • Baryka007
    addikt

    Na én most megkapom az adatokat, de karakterkódolási hiba van benne, pedig a chcp 1250-et is beletettem. A kimenetben van a hiba.

    Illetve az ipconfigos részt, még mindig nem kapom meg. :(

    Így próbáltad már?

    >> valami.txt systeminfo | find /i "Operßciˇs rendszer neve"

    Így ki írja szöveges dokumentumba ( elvileg ékezetes betűkkel ) bár még nem teszteltem...

  • PumpkinSeed
    addikt

    Na én most megkapom az adatokat, de karakterkódolási hiba van benne, pedig a chcp 1250-et is beletettem. A kimenetben van a hiba.

    Illetve az ipconfigos részt, még mindig nem kapom meg. :(

  • cigam
    titán

    Nekem viszont ment :||

    Oké lehet, hogy jól fut le, és ha ezt másolom ki egy notepad-ba megint helyreállnak az ékezetes bötük. A DOS ablakban továbbra is krikszkraksz. Bár ez inkább kozmetikai hiba.

  • cigam
    titán

    vagy írd be a batch elejére hogy
    chcp 1250

    és onnantól kezdve tudsz ékezetet gépelni a batchbe ;)

    Nekem ez nem működik:

  • PumpkinSeed
    addikt

    Persze mert más a codepage. Ha bekapcsolod a viszhangot, te is látod, hogy az ékezet bekavar:
    >systeminfo | find /i "Operßciˇs rendszer neve"
    >systeminfo | find /i "Operßciˇs rendszer verziˇja"
    >ipconfig | find /i "IPv4-cÝm"

    Ne notepaddal szerkeszd, hanem olyannal ami tud 852-es kódlapot használva menteni. pl AkelPad

    Ez volt a probléma köszönöm. :) :R

  • Baryka007
    addikt

    Persze mert más a codepage. Ha bekapcsolod a viszhangot, te is látod, hogy az ékezet bekavar:
    >systeminfo | find /i "Operßciˇs rendszer neve"
    >systeminfo | find /i "Operßciˇs rendszer verziˇja"
    >ipconfig | find /i "IPv4-cÝm"

    Ne notepaddal szerkeszd, hanem olyannal ami tud 852-es kódlapot használva menteni. pl AkelPad

    vagy írd be a batch elejére hogy
    chcp 1250

    és onnantól kezdve tudsz ékezetet gépelni a batchbe ;)

  • cigam
    titán

    Egyesévvel megnéztem cmd-ben lefutnak és a kimenet rendesen kiírja a paramétereket, de batch file-be átültetve már nem megy.

    Persze mert más a codepage. Ha bekapcsolod a viszhangot, te is látod, hogy az ékezet bekavar:
    >systeminfo | find /i "Operßciˇs rendszer neve"
    >systeminfo | find /i "Operßciˇs rendszer verziˇja"
    >ipconfig | find /i "IPv4-cÝm"

    Ne notepaddal szerkeszd, hanem olyannal ami tud 852-es kódlapot használva menteni. pl AkelPad

  • PumpkinSeed
    addikt

    Milyen (nyelvü) oprendszer? a sima sysinfo kimenetében van "Operációs rendszer neve"
    Pl. W8.1 alatt a systeminfo | find /i "Os Name" működik.

    Egyesévvel megnéztem cmd-ben lefutnak és a kimenet rendesen kiírja a paramétereket, de batch file-be átültetve már nem megy.

  • cigam
    titán

    Milyen (nyelvü) oprendszer? a sima sysinfo kimenetében van "Operációs rendszer neve"
    Pl. W8.1 alatt a systeminfo | find /i "Os Name" működik.

  • cigam
    titán

    systeminfo | find /i "Operációs rendszer neve"
    systeminfo | find /i "Operációs rendszer verziója"
    ipconfig | find /i "IPv4-cím"

    Van egy batch filem amiben a fenti kódrészlet van. Lefut, de nem adja be. Ezután még egy pause van és vége.

    Mit nem ad be?

  • PumpkinSeed
    addikt

    systeminfo | find /i "Operációs rendszer neve"
    systeminfo | find /i "Operációs rendszer verziója"
    ipconfig | find /i "IPv4-cím"

    Van egy batch filem amiben a fenti kódrészlet van. Lefut, de nem adja be. Ezután még egy pause van és vége.

  • Csontikka
    aktív tag

    Elnézésedet kérem amiért nem köszöntem meg a segítségedet. :) De meg is csináltam a programot és egyből ki is ment a fejemből örömömben a köszönet. Ne haragudj! :)

    Viszont lenne még egy kérdésem... megoldható BATCHEL hogy X időközönként elinduljon és végrehajtson parancsokat ? Mindezt úgy hogy amíg nem nyílik fel X ideig a batch addig ne legyen az asztalomon egy fekete ablak vagy hasonló ?

    nincsmit :)

    örülök hogy ez is sikerült
    :))

  • Baryka007
    addikt

    Elnézésedet kérem amiért nem köszöntem meg a segítségedet. :) De meg is csináltam a programot és egyből ki is ment a fejemből örömömben a köszönet. Ne haragudj! :)

    Viszont lenne még egy kérdésem... megoldható BATCHEL hogy X időközönként elinduljon és végrehajtson parancsokat ? Mindezt úgy hogy amíg nem nyílik fel X ideig a batch addig ne legyen az asztalomon egy fekete ablak vagy hasonló ?

    Közben megoldottam a "Windows Feladat Ütemező" -vel :)

  • Baryka007
    addikt

    Szia,

    call-al hívd ne start /wait-el

    call proba%x%.bat

    Elnézésedet kérem amiért nem köszöntem meg a segítségedet. :) De meg is csináltam a programot és egyből ki is ment a fejemből örömömben a köszönet. Ne haragudj! :)

    Viszont lenne még egy kérdésem... megoldható BATCHEL hogy X időközönként elinduljon és végrehajtson parancsokat ? Mindezt úgy hogy amíg nem nyílik fel X ideig a batch addig ne legyen az asztalomon egy fekete ablak vagy hasonló ?

  • Csontikka
    aktív tag

    Tudnátok egy picit segíteni ? Kicsit elakadtam egyetlen paranccsal ... -.-

    start /wait proba%x%.bat

    miután bezáródott a proba%x%.bat a fő program megkérdezi hogy Befejezi a kötegfájl futtatástá? ( I / N ) megoldható lenne hogy ne tegye fel a kérdést és fusson tovább a program ilyenkor ?

    Szia,

    call-al hívd ne start /wait-el

    call proba%x%.bat

  • Baryka007
    addikt

    Tudnátok egy picit segíteni ? Kicsit elakadtam egyetlen paranccsal ... -.-

    start /wait proba%x%.bat

    miután bezáródott a proba%x%.bat a fő program megkérdezi hogy Befejezi a kötegfájl futtatástá? ( I / N ) megoldható lenne hogy ne tegye fel a kérdést és fusson tovább a program ilyenkor ?

  • sztanozs
    veterán

    Sziasztok!

    Egy telnet parancshoz kérném a segítségeteket. Egy SIGNAL XZY kódot kéne küldenem a localhostom n-edik portján futó alkalmazásnak, valamint ezt 120 másodpercenként újraküldeni (nem kell paraméter, majd behelyettesítem). A Telnet kliens már telepítve van, csak a szintaxist nem tudom. Tudnátok nekem segíteni? :R

    netcat kell neked sztem, nem telnet...

  • r4z
    nagyúr

    Sziasztok!

    Egy telnet parancshoz kérném a segítségeteket. Egy SIGNAL XZY kódot kéne küldenem a localhostom n-edik portján futó alkalmazásnak, valamint ezt 120 másodpercenként újraküldeni (nem kell paraméter, majd behelyettesítem). A Telnet kliens már telepítve van, csak a szintaxist nem tudom. Tudnátok nekem segíteni? :R

  • Paulo81
    aktív tag

    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...

    Nekem egy egyszerű probléma volt, amivel nem számoltam: a winmgmt-t letiltottam az asio állítás után, és enélkül a batch file nem tudja értelmezni azt a feltételt, hogy fut-e a foobar, szóval mindenképp 1 lett az errorlevel értéke.
    Nálad fogalmam sincs mi okohatja, talán neked is valami win hülyeség...? :U

  • 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

  • Paulo81
    aktív tag

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

  • Csontikka
    aktív tag

    Sziasztok!

    Háttérben szeretnék pendrive-ról másolni (arhiválni, de nem mindent) egy adott gépen, de külön program nélkül és a teljesen (láthatatlanul) a háttérben. Batch-ben meg lehet ezt oldani?

    vagy ütemezz be egy robocopy-t háttérben futásra az a legegyszerűbb (elég ha egyszer indul induláskor, a MOT paraméterrel ismételgeti a másolást megadott időközönként)

    pl.
    robocopy /MOT:1 "E:" "c:\BACKUP"

  • sztanozs
    veterán

    Sziasztok!

    Háttérben szeretnék pendrive-ról másolni (arhiválni, de nem mindent) egy adott gépen, de külön program nélkül és a teljesen (láthatatlanul) a háttérben. Batch-ben meg lehet ezt oldani?

    Időzített schedule-lel meg lehet oldani vagy folyamatosan futó batch-csel, de méginkább vbscript-tel.

  • Panthera
    őstag

    Sziasztok!

    Háttérben szeretnék pendrive-ról másolni (arhiválni, de nem mindent) egy adott gépen, de külön program nélkül és a teljesen (láthatatlanul) a háttérben. Batch-ben meg lehet ezt oldani?

  • 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...

  • Paulo81
    aktív tag

    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

    Hogy állítsam az errorlevelt 3-ra? Set-tel nekem nem működött még a 0-ra állítás sem.
    Ha Sztanszos elmagyarázza a setlocal-t, megpróbálom :D

    Bele lehet csempészni még ebbe a programba, hogy a legelején is megnézze, hogy fut-e a foobar, és ha nem, akkor lépjen egy figyelmeztető címkére addig, amíg elindítom? :) (Mert már jártam úgy, hogy nem indítottam el a foobar-t és úgy összekavar mindent)

  • 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.

  • Paulo81
    aktív tag

    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....

    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

  • Paulo81
    aktív tag

    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....

    Majd még kipróbálom, de kicsit elment a kedvem most a batch programozástól. Azon gondolkodom, hogy akár felelevenítem a tanultakat és turbo pascalban megírom, sokkal könnyebben lehetne kezelni ezeket az eseményeket.

  • 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

  • Paulo81
    aktív tag

    @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 :)

    Őőő, 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.

  • 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 :)

  • Paulo81
    aktív tag

    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 :)

    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.

  • 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 :)

  • Paulo81
    aktív tag

    Már nem tudtam szerkeszteni esetleg

    ez alá még írd be ezt: goto fute

    így:

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

    Köszi, kipróbálom.

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

  • Baryka007
    addikt

    @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

    Már nem tudtam szerkeszteni esetleg

    ez alá még írd be ezt: goto fute

    így:

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

  • 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.

  • 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

  • Paulo81
    aktív tag

    Ennél létezik egy ezerszer könnyebb megoldás!

    Íme:

    echo off
    cls
    :start
    tasklist | find "calc.exe"

    REM ha calc fut akkor az errorlevel 0 lesz
    REM ha calc nem fut akkor az errorlevel 1 lesz

    if %errorlevel% == 0 goto fut
    if %errorlevel% == 1 goto nemfut
    goto start

    :fut
    ECHO FUT
    echo.
    PING -n 3 127.0.0.1>nul
    goto start

    :nemfut
    echo NEM FUT
    echo.
    PING -n 3 127.0.0.1>nul
    goto start

    Én calc.exe vel teszteltem tökéletes :K

    Ez működik, köszönöm szépen! :R :R

  • Paulo81
    aktív tag

    @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ó...

    Ez nem működik, ha nem fut, akkor is fut a program szerint :)

  • Baryka007
    addikt

    @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ó...

    Ennél létezik egy ezerszer könnyebb megoldás!

    Íme:

    echo off
    cls
    :start
    tasklist | find "calc.exe"

    REM ha calc fut akkor az errorlevel 0 lesz
    REM ha calc nem fut akkor az errorlevel 1 lesz

    if %errorlevel% == 0 goto fut
    if %errorlevel% == 1 goto nemfut
    goto start

    :fut
    ECHO FUT
    echo.
    PING -n 3 127.0.0.1>nul
    goto start

    :nemfut
    echo NEM FUT
    echo.
    PING -n 3 127.0.0.1>nul
    goto start

    Én calc.exe vel teszteltem tökéletes :K

  • 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

  • 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

  • sztanozs
    veterán

    Ezzel mi a gond?!

    @echo off
    mkdir c:\ment\1\
    move "%USERPROFILE%\Desktop" c:\ment\1\
    if not exist(
    xcopy "%USERPROFILE%\Asztal" c:\ment\1\ )
    else (
    goto exits
    :exits
    EXIT

    if not exist - nem adtad meg, mi nem létezik

    @echo off
    mkdir c:\ment\1\
    if not exist "%USERPROFILE%\Desktop\" (
    xcopy "%USERPROFILE%\Asztal" c:\ment\1\
    )
    else (
    move "%USERPROFILE%\Desktop" c:\ment\1\
    )

  • stryker.hu
    csendes tag

    Sziasztok!
    Egy kis segítséget kérnék, bat file vagy Wscript filet kellene létrehoznom ami az alábbiakat csinálja:
    %userprofile% könyvtárból a documents, desktop, favorite könyvtárakat kimásolja vagy mozgatja a c:\ment\-be .
    De!
    Egy rakat gépnél a documentum, asztal, kedvencek szerepelnek, hogyan tudok feltételes moddba berakni, hogy ha a "%userprofile%\my documents" könyvtár hibaüzenetet ad ki akkor próbálja meg a "%userprofile%\dokumentum" - könyvtárat.

    Válaszokat köszönöm!

    Ezzel mi a gond?!

    @echo off
    mkdir c:\ment\1\
    move "%USERPROFILE%\Desktop" c:\ment\1\
    if not exist(
    xcopy "%USERPROFILE%\Asztal" c:\ment\1\ )
    else (
    goto exits
    :exits
    EXIT

  • stryker.hu
    csendes tag

    Sziasztok!
    Egy kis segítséget kérnék, bat file vagy Wscript filet kellene létrehoznom ami az alábbiakat csinálja:
    %userprofile% könyvtárból a documents, desktop, favorite könyvtárakat kimásolja vagy mozgatja a c:\ment\-be .
    De!
    Egy rakat gépnél a documentum, asztal, kedvencek szerepelnek, hogyan tudok feltételes moddba berakni, hogy ha a "%userprofile%\my documents" könyvtár hibaüzenetet ad ki akkor próbálja meg a "%userprofile%\dokumentum" - könyvtárat.

    Válaszokat köszönöm!

  • Baryka007
    addikt

    Restart0-ra megy rá minden óra 0-kor. Az actmin és a filemin értékét a 2. és a harmadik bekezdésben számítom.

    set actmin=%acttime:~3,2%
    IF "%actmin:~0,1%"=="0" SET /a actmin=%actmin:~1,1%

    FOR %%f IN (%actfolder%) DO SET filedatetime=%%~tf
    ...
    set filemin=%filedatetime:~15,2%
    IF "%filemin:~0,1%"=="0" SET filemin=%filemin:~1,1%

    ezt próbáld meg
    if actmin GTR 2 goto after2mins
    goto ok
    nincs az actmin %actmin% így leírva ez is lehet hiba.

  • BigBlackDog
    veterán

    Én erre a részre tippelnék hogyha valami hibás:
    set /a firstmin=%actmin%-2
    if %filemin% LSS %firstmin% goto restart1
    goto ok

    de érdekelne hogy a filemin -t és az actmin-t mivel kapod meg pontosan ? Az a programrész érdekelne mert szerintem ott van valami gebasz azt nézd meg hogyha a Restart1 re megy rá akkor biztos hogy valami avval van.

    Valamint itt:
    if actmin GTR 2 goto after2mins
    goto ok

    nincs az actmin %actmin% így leírva ez is lehet hiba.

    Szerk.: Mivel actmin nem nagyobb 2 nél...

    Restart0-ra megy rá minden óra 0-kor. Az actmin és a filemin értékét a 2. és a harmadik bekezdésben számítom.

    set actmin=%acttime:~3,2%
    IF "%actmin:~0,1%"=="0" SET /a actmin=%actmin:~1,1%

    FOR %%f IN (%actfolder%) DO SET filedatetime=%%~tf
    ...
    set filemin=%filedatetime:~15,2%
    IF "%filemin:~0,1%"=="0" SET filemin=%filemin:~1,1%

  • Baryka007
    addikt

    Adott egy program, aminek folyamatosan futnia kell, percenként írja az egyik mappa tartalmát. Ha nem működik megfelelően, akkor rövid időn -1-3 perc- belül újra kell indítani. A "nem működést" legegyszerűbb módon úgy tudom észlelni, hogy a mappa módosítási dátuma legalább 2 perccel korábbi .Ennek észlelését és a program újraindítást egy batch scripttel szeretném megoldani.
    Az újraindítás rendben működik, azonban valamiért néhány óránként, egész óra nulla perckor is szeretné újraindítani a programot. Elvileg az if elágazás miatt ez nem történhetne meg, mivel a %actmin% változó értéke nulla. Mi lehet a hiba a scriptben? Előre is köszönöm a válaszokat!
    A kód így néz ki:

    set mypath=c:\MyFolder\
    set actfolder=%mypath%%1

    :loop
    set acttime=%time%
    set acthour=%acttime:~0,2%
    IF "%acthour:~0,1%"=="0" SET /a acthour=%acthour:~1,1%
    set actmin=%acttime:~3,2%
    IF "%actmin:~0,1%"=="0" SET /a actmin=%actmin:~1,1%

    FOR %%f IN (%actfolder%) DO SET filedatetime=%%~tf
    set /a filehour=%filedatetime:~12,2%
    IF "%filehour:~0,1%" == "0" SET filehour=%filehour:~1,1%
    set filemin=%filedatetime:~15,2%
    IF "%filemin:~0,1%"=="0" SET filemin=%filemin:~1,1%

    if actmin GTR 2 goto after2mins
    goto ok

    :after2mins
    if %acthour% NEQ %filehour% goto restart0

    set /a firstmin=%actmin%-2
    if %filemin% LSS %firstmin% goto restart1
    goto ok

    :restart0
    color C
    echo Restart0 @ %date% %time%
    echo Restart0 @ %date% %time%, Act: %acthour%:%actmin%, File: %filehour%:%filemin%, Acttime: %acttime%, Filedatetime: %filedatetime% >> MyLog.log
    goto sleep

    :restart1
    color C
    echo Restart1 @ %date% %time%
    echo Restart1 @ %date% %time%, Act: %acthour%:%actmin%, File: %filehour%:%filemin%, Firstmin: %firstmin% >> MyLog.log
    goto sleep

    : ok
    cls
    color A
    echo Acttime: %acthour%:%actmin%
    echo Folder modified time: %filehour%:%filemin%
    echo OK
    if exist %mypath%MyLog.log (
    echo LOG EXISTS!!!
    color e
    )
    goto sleep

    :restart
    REM Ez mukodik
    goto loop

    :sleep
    sleep 60
    goto loop

    Én erre a részre tippelnék hogyha valami hibás:
    set /a firstmin=%actmin%-2
    if %filemin% LSS %firstmin% goto restart1
    goto ok

    de érdekelne hogy a filemin -t és az actmin-t mivel kapod meg pontosan ? Az a programrész érdekelne mert szerintem ott van valami gebasz azt nézd meg hogyha a Restart1 re megy rá akkor biztos hogy valami avval van.

    Valamint itt:
    if actmin GTR 2 goto after2mins
    goto ok

    nincs az actmin %actmin% így leírva ez is lehet hiba.

    Szerk.: Mivel actmin nem nagyobb 2 nél...

  • BigBlackDog
    veterán

    Adott egy program, aminek folyamatosan futnia kell, percenként írja az egyik mappa tartalmát. Ha nem működik megfelelően, akkor rövid időn -1-3 perc- belül újra kell indítani. A "nem működést" legegyszerűbb módon úgy tudom észlelni, hogy a mappa módosítási dátuma legalább 2 perccel korábbi .Ennek észlelését és a program újraindítást egy batch scripttel szeretném megoldani.
    Az újraindítás rendben működik, azonban valamiért néhány óránként, egész óra nulla perckor is szeretné újraindítani a programot. Elvileg az if elágazás miatt ez nem történhetne meg, mivel a %actmin% változó értéke nulla. Mi lehet a hiba a scriptben? Előre is köszönöm a válaszokat!
    A kód így néz ki:

    set mypath=c:\MyFolder\
    set actfolder=%mypath%%1

    :loop
    set acttime=%time%
    set acthour=%acttime:~0,2%
    IF "%acthour:~0,1%"=="0" SET /a acthour=%acthour:~1,1%
    set actmin=%acttime:~3,2%
    IF "%actmin:~0,1%"=="0" SET /a actmin=%actmin:~1,1%

    FOR %%f IN (%actfolder%) DO SET filedatetime=%%~tf
    set /a filehour=%filedatetime:~12,2%
    IF "%filehour:~0,1%" == "0" SET filehour=%filehour:~1,1%
    set filemin=%filedatetime:~15,2%
    IF "%filemin:~0,1%"=="0" SET filemin=%filemin:~1,1%

    if actmin GTR 2 goto after2mins
    goto ok

    :after2mins
    if %acthour% NEQ %filehour% goto restart0

    set /a firstmin=%actmin%-2
    if %filemin% LSS %firstmin% goto restart1
    goto ok

    :restart0
    color C
    echo Restart0 @ %date% %time%
    echo Restart0 @ %date% %time%, Act: %acthour%:%actmin%, File: %filehour%:%filemin%, Acttime: %acttime%, Filedatetime: %filedatetime% >> MyLog.log
    goto sleep

    :restart1
    color C
    echo Restart1 @ %date% %time%
    echo Restart1 @ %date% %time%, Act: %acthour%:%actmin%, File: %filehour%:%filemin%, Firstmin: %firstmin% >> MyLog.log
    goto sleep

    : ok
    cls
    color A
    echo Acttime: %acthour%:%actmin%
    echo Folder modified time: %filehour%:%filemin%
    echo OK
    if exist %mypath%MyLog.log (
    echo LOG EXISTS!!!
    color e
    )
    goto sleep

    :restart
    REM Ez mukodik
    goto loop

    :sleep
    sleep 60
    goto loop

  • sztanozs
    veterán

    Nem úgy értem, hanem magát a kódot nem jeleníti meg. Nem írja ki konzolra az éppen sorra kerülő parancsot.

    Ja, igen, persze. Csak a kimeneteket jeleníti meg, a parancsokat nem.

  • cigam
    titán

    Csak, ha odatolod elé a @-ot ;)

    Nem úgy értem, hanem magát a kódot nem jeleníti meg. Nem írja ki konzolra az éppen sorra kerülő parancsot.

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

Hirdetés