Hirdetés

2024. április 25., csütörtök

Gyorskeresés

Hozzászólások

(#501) cigam válasza sztanozs (#500) üzenetére


cigam
félisten

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

Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews

(#502) sztanozs válasza cigam (#501) üzenetére


sztanozs
veterán

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

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#503) BigBlackDog


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

[ Szerkesztve ]

(#504) Baryka007 válasza BigBlackDog (#503) üzenetére


Baryka007
őstag

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

[ Szerkesztve ]

(#505) BigBlackDog válasza Baryka007 (#504) üzenetére


BigBlackDog
veterán

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%

(#506) Baryka007 válasza BigBlackDog (#505) üzenetére


Baryka007
őstag

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

(#507) stryker.hu


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!

(#508) stryker.hu válasza stryker.hu (#507) üzenetére


stryker.hu
csendes tag

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

(#509) sztanozs válasza stryker.hu (#508) üzenetére


sztanozs
veterán

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

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#510) Paulo81


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

[ Szerkesztve ]

(#511) Paulo81 válasza Paulo81 (#510) üzenetére


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

(#512) Paulo81 válasza Paulo81 (#511) üzenetére


Paulo81
aktív tag

@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

(#513) sztanozs válasza Paulo81 (#512) üzenetére


sztanozs
veterán

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

[ Szerkesztve ]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#514) Baryka007 válasza sztanozs (#513) üzenetére


Baryka007
őstag

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

[ Szerkesztve ]

(#515) Paulo81 válasza sztanozs (#513) üzenetére


Paulo81
aktív tag

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

[ Szerkesztve ]

(#516) Paulo81 válasza Baryka007 (#514) üzenetére


Paulo81
aktív tag

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

(#517) Baryka007 válasza Paulo81 (#516) üzenetére


Baryka007
őstag

Igazán nincs mit :)

(#518) Paulo81 válasza Baryka007 (#517) üzenetére


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

(#519) Paulo81 válasza Paulo81 (#518) üzenetére


Paulo81
aktív tag

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.

[ Szerkesztve ]

(#520) Baryka007 válasza Paulo81 (#518) üzenetére


Baryka007
őstag

@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

(#521) Baryka007 válasza Baryka007 (#520) üzenetére


Baryka007
őstag

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

(#522) Paulo81 válasza Baryka007 (#521) üzenetére


Paulo81
aktív tag

Köszi, kipróbálom.

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

(#523) Baryka007 válasza Paulo81 (#522) üzenetére


Baryka007
őstag

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

(#524) Paulo81 válasza Baryka007 (#523) üzenetére


Paulo81
aktív tag

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.

[ Szerkesztve ]

(#525) Baryka007 válasza Paulo81 (#524) üzenetére


Baryka007
őstag

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

(#526) Paulo81 válasza Baryka007 (#525) üzenetére


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.

(#527) Paulo81 válasza Paulo81 (#526) üzenetére


Paulo81
aktív tag

É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

(#528) Baryka007 válasza Paulo81 (#526) üzenetére


Baryka007
őstag

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

(#529) Paulo81 válasza Baryka007 (#528) üzenetére


Paulo81
aktív tag

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.

(#530) Paulo81 válasza Baryka007 (#528) üzenetére


Paulo81
aktív tag

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

(#531) sztanozs válasza Paulo81 (#530) üzenetére


sztanozs
veterán

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

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#532) Baryka007 válasza Paulo81 (#530) üzenetére


Baryka007
őstag

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

[ Szerkesztve ]

(#533) Paulo81 válasza sztanozs (#531) üzenetére


Paulo81
aktív tag

Megmondom őszintén ezt nem értem...

(#534) Paulo81 válasza Baryka007 (#532) üzenetére


Paulo81
aktív tag

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)

(#535) Paulo81


Paulo81
aktív tag

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

(#536) sztanozs válasza Paulo81 (#535) üzenetére


sztanozs
veterán

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

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#537) Panthera


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?

(#538) sztanozs válasza Panthera (#537) üzenetére


sztanozs
veterán

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

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#539) Csontikka válasza Panthera (#537) üzenetére


Csontikka
aktív tag

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"

(#540) Paulo81


Paulo81
aktív tag

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

(#541) Baryka007 válasza Paulo81 (#540) üzenetére


Baryka007
őstag

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

(#542) sztanozs válasza Paulo81 (#540) üzenetére


sztanozs
veterán

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

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#543) Paulo81 válasza sztanozs (#542) üzenetére


Paulo81
aktív tag

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

(#544) r4z


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

[ Szerkesztve ]

I don't love people. I love 911s, Astral Projection and french fries, in that order.

(#545) sztanozs válasza r4z (#544) üzenetére


sztanozs
veterán

netcat kell neked sztem, nem telnet...

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#546) Baryka007


Baryka007
őstag

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 ?

(#547) Csontikka válasza Baryka007 (#546) üzenetére


Csontikka
aktív tag

Szia,

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

call proba%x%.bat

(#548) Baryka007 válasza Csontikka (#547) üzenetére


Baryka007
őstag

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ó ?

(#549) Baryka007 válasza Baryka007 (#548) üzenetére


Baryka007
őstag

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

(#550) Csontikka válasza Baryka007 (#548) üzenetére


Csontikka
aktív tag

nincsmit :)

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

Copyright © 2000-2024 PROHARDVER Informatikai Kft.