Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[batch]If processen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een if laten controleren als er 3 cmd bestanden bezich zijn,
Ik heb al:
tasklist /FI "cmd.exe" | find /i "cmd.exe"
Gevonden maar als er 3 aan zet komt er wel "ja" uit maar als ik er 1 heb ook.

Dus hoe zou ik dat kunnen doen?

  • Jester-NL
  • Registratie: Januari 2003
  • Niet online

Jester-NL

... pakt een botte bijl

het is dus niet (alleen) "als", maar ook "en"?

The sky above the port was the color of television, turned to a dead channel
me @ last.fm


  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 26-11 14:09
Volgens mij gaat je commando al helemaal niet werken...
Dit doet al meer:
code:
1
tasklist.exe /FI "IMAGENAME eq cmd.exe"

Text output:
1
2
3
4
Image Name                   PID Session Name     Session#    Mem Usage
========================= ====== ================ ======== ============
cmd.exe                     2368                         0      3.268 K
cmd.exe                     3852                         0      2.944 K


Verder is je openingspost verre van compleet, laat je code eens zien wat je hebt.
Misschien ook een topic move aanvragen naar Programming , al word het daar niet gewaardeerd om scripts aan te vragen. Helpen met een script is natuurlijk wat anders.

[ Voor 23% gewijzigd door mhoogendam op 16-12-2009 13:16 ]


Verwijderd

Topicstarter
Oh sorry, fout geplaatst :$
Ik heb nog niks, maar ik was meer benieuwt als het zou gaan.

Maar dan kan ik dat oplaten slaan in een kladblok bestand, en dan uit laten lezen hoevaak cmd.exe voorkomt. Dus regel voor regel laten uitlezen.

Met mirc zou ik dat wel kunnen, maar met batch niet.

  • Krypt
  • Registratie: April 2000
  • Laatst online: 23-11 16:48
Met batch kan je het ook hoor. Simpel zelfs :)

for /f %x in ('tasklist ^| find /c /i "cmd.exe"') do echo %COUNT%|set /a COUNT=%x-1

Pvouput live


  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 26-11 14:09
Bijna dezelfde code met de toevoeging " > c:\cmd.txt"
code:
1
tasklist.exe /FI "IMAGENAME eq cmd.exe" > c:\cmd.txt

code:
1
2
3
4
Image Name                   PID Session Name     Session#    Mem Usage
========================= ====== ================ ======== ============
cmd.exe                     1164                         0      3.352 K
cmd.exe                     3312                         0      2.948 K

code:
1
find.exe /C "cmd.exe" c:\cmd.txt

code:
1
---------- C:\CMD.TXT: 2


En nu zelf weer ff wat proberen ;)

[ Voor 3% gewijzigd door mhoogendam op 16-12-2009 13:28 ]


Verwijderd

Topicstarter
Oke bedankt, Dat lukt :D
En dan moet ik hem zo in een if zetten:
---------- C:\CMD.TXT: 2 IPV 2

Bedankt

  • Krypt
  • Registratie: April 2000
  • Laatst online: 23-11 16:48
Beschrijf nu eens wat je er mee wilt?

Wil je het resultaat ergens in laten zetten, of gewoon laten tonen (zoals mijn commandline)?
En wil je het vanuit een batchfile aanspreken of vanuit de commandline?

Pvouput live


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
@echo off
:terug
tasklist.exe /FI "IMAGENAME eq cmd.exe" > c:\cmd.txt
set var= find.exe /C "cmd.exe" c:\cmd.txt
IF "---------- C:\CMD.TXT: 1"==%var% GOTO goed
del C:\cmd.txt
goto terug
:goed
echo klaar en werkt
pause


Ik heb dat gedaan, maar hoe kan ik:
set var= find.exe /C "cmd.exe" c:\cmd.txt
Goed maken? Dus dat %var% de output word.


___________
Edit:
Alles via een batch. Iemand vroeg me hoe je dat moest doen, en ik wist het ook niet, daarom dachten we, we vragen het hier.

[ Voor 16% gewijzigd door Verwijderd op 16-12-2009 14:44 ]


  • Krypt
  • Registratie: April 2000
  • Laatst online: 23-11 16:48
Om in de 'var' variabele het resultaat te laten verschijnen van een opdracht moet je een for startement gebruiken

code:
1
for /f "tokens=*" %%x in ('find.exe /c "cmd.exe" c:\cmd.txt') set var %%x

Vervolgens moet je goed matchen:
code:
1
if "---------- C:\CMD.TXT: 1"=="%var%" goto goed

Let op de quotes

Ik zou het dan zo doen
code:
1
2
3
4
5
6
@echo off
:terug
for /f %%x in ('tasklist ^| find /c /i "cmd.exe"') do set /a COUNT=%%x-1
if "%COUNT%"=="1" goto goed
goto terug
:goed


Want dan heb je geen tijdelijke bestandjes nodig. Eventueel kan je er nog een pause van een seconde in elke loop stoppen dmv. een ping commando

Pvouput live


Verwijderd

Topicstarter
Oh vandaar :P
Bedankt :D, nu werkt het

Edit:
Owja, waarom werkt deze niet:
code:
1
2
3
4
5
6
7
8
9
10
@echo off
:terug
set test=3
if "%test%" gtr "4" (
goto goed
)
echo a %test%
goto terug
:goed
pause

Edit2:
al gevonden, je mag geen "" gebruiken

[ Voor 78% gewijzigd door Verwijderd op 16-12-2009 16:08 ]


Verwijderd

Topicstarter
Als ik dit uitvoer dan krijg ik steeds dat er 98 x cmd open staat.
Allen mag er maar 50 openen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
set var=0
set test=1
:start1
set /A var=%var%+1
start 2.bat
set test=1
:aaa
set /A test=%test%+1
echo %test%
if "%test%"=="10" goto bbb
goto aaa
:bbb
if "%var%"=="49" goto terug
goto start1
:terug
:b
echo %COUNT%
set COUNT=0
for /f %%x in ('tasklist ^| find /c /i "cmd.exe"') do set /a COUNT=%%x-1
if "%COUNT%"=="50" goto goed
goto b
:goed
echo Er staan 50 cmd's open
echo %COUNT%
if "%COUNT%"=="50" goto goed
:start
echo %var%
Echo er gaat iets mis want er staan geen 50 cmd's meer open
pause


Dit krijg ik
89
98
97
etc etc

Edit:
2.bat

code:
1
2
3
4
5
6
@echo off
:a
for /f %%x in ('tasklist ^| find /c /i "cmd.exe"') do set /a COUNT=%%x-1
echo %COUNT%
goto a
pause

[ Voor 196% gewijzigd door Verwijderd op 16-12-2009 20:31 ]


  • Krypt
  • Registratie: April 2000
  • Laatst online: 23-11 16:48
Erhmm. kijk eens goed naar die 2.bat van je. Die blijft in een loop hangen. Geen wonder dat ie daar nooit uit komt.

Pvouput live

Pagina: 1