- LordAthis: Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja az aktuális trendeket...
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Meggyi001: Nyilvános wc-k.....még mindig hiánypótló...
- Elektromos rásegítésű kerékpárok
- eBay-es kütyük kis pénzért
Hirdetés
Ú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 ? -
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 -
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.
-
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
-
@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?
-
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
Hirdetés
- LordAthis: Ismét egy "Idióta" A.I. Projekt, hogy meglovagolja az aktuális trendeket...
- QNAP hálózati adattárolók (NAS)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Battlefield 6
- Debian GNU/Linux
- Hardcore café
- Milyen egeret válasszak?
- Hivatalos a OnePlus 13 startdátuma
- Mikrotik routerek
- Lakáshitel, lakásvásárlás
- További aktív témák...
- Szép HP EliteBook 840 G9 Fémházas Hordozható Érintős Ultrabook 14" -40% i5-1235U 32/1TB Iris Xe FHD+
- Logitech G935
- Creative Sound Blaster Live! 5.1-es digitális PCI hangkártya
- Rock Shox Recon Silver Air gyorszáras villa eladó (29-es)!
- ÚJ Nvidia RTX 5060/TI 8-16Gb GDDR7 DLSS4.0 Ryzen 7 5800X 16x4.7Ghz/32GB/512Gb/1TB M SSD/2ÉV gamer PC
- Dell Latitude 3340 Core i3-4005U CPU hibás laptop
- BESZÁMÍTÁS! Asus TUF A620M R7 7700 32GB DDR5 1TB SSD RX 6800 XT 16GB ZALMAN I3 NEO Gigabyte 750W
- LG 27GR95UM - 27" MiniLED - UHD 4K - 160Hz 1ms - NVIDIA G-Sync - FreeSync Premium PRO - HDR 1000
- REFURBISHED - Lenovo ThinkPad 40A9 docking station
- Szép állapotban levő Apple iPhone 12 Pro Max 128GB / 12 hó jótállás
Állásajánlatok
Cég: FOTC
Város: Budapest