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
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
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...
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 ]
É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 ]
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.
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
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\
)
[ 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...
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?
[ Szerkesztve ]
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.
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ó...
[ 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...
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
[ Szerkesztve ]
Ez nem működik, ha nem fut, akkor is fut a program szerint
[ Szerkesztve ]
Ez működik, köszönöm szépen!
Igazán nincs mit
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, )
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.
@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.
[ Szerkesztve ]
@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
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?
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.
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 ]
@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.
É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?
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.
Na még egy utolsó lendületet vettem, és már azt elértem, hogy lefut a loop, viszont most nem lép ki!
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? 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?
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.
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...
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... )
[ Szerkesztve ]
Megmondom őszintén ezt nem értem...
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
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)
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...
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.
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...
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"
Nagy nehézségek árán sikerült működőképesre varázsolni a progit.
Remek Már komolyan örülök neki én is
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...
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...?
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?
[ Szerkesztve ]
I don't love people. I love 911s, Astral Projection and french fries, in that order.
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...
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
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