- sziku69: Fűzzük össze a szavakat :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- eBay-es kütyük kis pénzért
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- laskr99: Processzor és videokártya szilícium mag fotók újrakezdés
- Hieronymus: A németországi vasúthálózat
- Viber: ingyen telefonálás a mobilodon
Új hozzászólás Aktív témák
-
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
válasz
Baryka007 #596 üzenetére
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
oldottamkerültem meg a problémát, hogy csináltam egy klónt, ahol a gép neve TEST-PC -
bepken
veterán
válasz
Baryka007 #594 üzenetére
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) -
bepken
veterán
í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
válasz
Csontikka #591 üzenetére
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ödikna de van még kérdésem bőven, remélem nem gond
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.... -
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 megadnile 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 -
PumpkinSeed
addikt
válasz
PumpkinSeed #588 üzenetére
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)
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
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 startamikor 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
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 ? -
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 64bitHa jól emlékszem IP címet néztem meg azóta csinálja ezt
-
sztanozs
veterán
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 -
sztanozs
veterán
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!Apropó: a BEGIN:VCARD sor előtt és az END:VCARD sor után kellene vágnia.
-
Csontikka
aktív tag
válasz
PumpkinSeed #568 üzenetére
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
válasz
Csontikka #567 üzenetére
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
válasz
PumpkinSeed #566 üzenetére
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.
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:
-
Csontikka
aktív tag
válasz
PumpkinSeed #564 üzenetére
úgy, hogy ezt a részt a dosbox autoexec.bat-jába rakod:
mount G: E:\bc
G:
cd bc
cd binmo
bc -
Baryka007
addikt
válasz
PumpkinSeed #562 üzenetére
Í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
válasz
PumpkinSeed #555 üzenetére
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
-
cigam
titán
válasz
PumpkinSeed #553 üzenetére
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
válasz
PumpkinSeed #551 üzenetére
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.
-
Baryka007
addikt
válasz
Csontikka #547 üzenetére
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ó ?
-
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 ?
-
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?
-
Paulo81
aktív tag
válasz
sztanozs #542 üzenetére
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...? -
Paulo81
aktív tag
Nagy nehézségek árán sikerült működőképesre varázsolni a progit.
-
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?
-
Paulo81
aktív tag
Látom elegetek lett belőlem!
-
Paulo81
aktív tag
válasz
Baryka007 #532 üzenetére
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álomBele 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
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.batA 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... )
-
Paulo81
aktív tag
válasz
Baryka007 #528 üzenetére
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 0for /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 0for /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 0REM 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 0for /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 0echo A process allitgatasok utan az errolevel erteke: %errorlevel%
pausecls
echo ALLITSD LE AZ MMCSS-T, ha ok, nyomj meg egy gombot...
pausesc 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 0echo Az MMCSS utan az errolevel erteke: %errorlevel%
pausecls
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 nemfutecho A FOOBAR VIZSGALAT UTAN az errolevel erteke: %errorlevel%
pause
if %errorlevel% == 0 goto asio
if %errorlevel% == 1 goto vegeREM 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 :futeREM 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 0echo 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 Audiosrvexit /b 0
-
Baryka007
addikt
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....
-
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
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 AudiosrvPróbáld ki így. Így működnie kell
-
Paulo81
aktív tag
válasz
Baryka007 #523 üzenetére
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. -
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 AudiosrvNah elvileg így sehogyan sem zavarhat be az errorlevel a programnak. Próbáld ki így
-
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. -
Paulo81
aktív tag
válasz
Baryka007 #517 üzenetére
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 %%Gfor /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 0REM 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 1REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -p %%G realtime 31
process -p "foobar2000.exe" realtime 31REM for /f "tokens=2" %%G in ('tasklist /nh /fi "imagename eq foobar2000.exe"') do process -a %%G 011
process -a "foobar2000.exe" 011for /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 011cls
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 011cls
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 Winmgmtset errorlevel=0
pause
goto fute
:vege
sc config Winmgmt start= demand
sc config MMCSS start= demand
REM net start MMCSS
REM net start Audiosrv -
Baryka007
addikt
válasz
sztanozs #513 üzenetére
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
-
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ó...
-
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%=%%GREM 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 -
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"')=truegoto csinald
ELSE goto vege
pause
:vegeEzt tudtam összehozni, de nem működik, szintaktikai hiba. Mit rontottam el?
-
sztanozs
veterán
válasz
stryker.hu #508 üzenetére
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
válasz
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 -
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
válasz
BigBlackDog #505 üzenetére
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
válasz
Baryka007 #504 üzenetére
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
válasz
BigBlackDog #503 üzenetére
Én erre a részre tippelnék hogyha valami hibás:
set /a firstmin=%actmin%-2
if %filemin% LSS %firstmin% goto restart1
goto okde é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 oknincs 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 restart0set /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
Új hozzászólás Aktív témák
- Megjelent a Poco F7, eurós ára is van már
- Kerékpárosok, bringások ide!
- E-roller topik
- One mobilszolgáltatások
- CURVE - "All your cards in one." Minden bankkártyád egyben.
- Milyen belső merevlemezt vegyek?
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- SSD kibeszélő
- Építő/felújító topik
- Forza sorozat (Horizon/Motorsport)
- További aktív témák...
- Intel Core i7 6700K / GTX 1660TI / 16GB DDR4 RAM / 500 GB SSD konfig eladó
- Samsung Galaxy S23 128GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A53 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Megkímélt állapotú Xbox Series X 1TB eladó. Kitisztítva és újrapasztázva!
- Gamer PC - i5 13400F, GTX 1080ti és 16gb DDR5
- 127 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080 (ELKELT)
- Csere-Beszámítás! Akciós Gamer PC! R5 5500 / GTX 1070Ti Rog Strix / 32GB D4 / 500GB SSD
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RX 6700 XT 12GB Rampage SHIVA Chieftec 700W
- BESZÁMÍTÁS! GIGABYTE AORUS ELITE Z790 i7 14700K 64GB DDR5 1TB SSD 7900XTX 24GB be quiet! SB802 1000W
- Thinkpad X230 legenda: i7 CPU, IPS kijelző, 12 GB, dupla SSD, magyar villbill, webcam, fingerprint
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest