/ Forside / Teknologi / Operativsystemer / MS Windows / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS Windows
#NavnPoint
Klaudi 76474
o.v.n. 67550
refi 58409
tedd 45557
Manse9933 45149
molokyle 40687
miritdk 38357
briani 27239
BjarneD 26414
10  pallebhan.. 24310
Problemer med batchscript (ping tider)
Fra : Ubbe


Dato : 10-11-05 16:40

Jeg har følgende batchfil:

ping noc.tele.dk > C:\giraf.txt
if %ERRORLEVEL%==0 FOR /F "skip=10 tokens=6 delims==," %%i in (C:\giraf.txt)
(
if %i LEQ 100 echo Ping tiden mindre end eller 100
if %i GTR 100 echo Ping tiden var mere end 100
)

Den melder fejl:

C:\>ping noc.tele.dk 1>C:\giraf.txt
The syntax of the command is incorrect.
C:\>if 0==0 FOR /F "skip=10 tokens=6 delims==," %i in (C:\giraf.txt)

Jeg kan ikke se fejlen? Den skulle jo gerne melde enten "Ping tiden mindre
end eller 100" eller "Ping tiden var mere end 100"?
Nogen gode idéer?



 
 
Klaus Jorgensen (10-11-2005)
Kommentar
Fra : Klaus Jorgensen


Dato : 10-11-05 19:10

"Ubbe" <gubbi@REMOVE.hotmaill.com> wrote in message
news:437369c9$0$188$edfadb0f@dread16.news.tele.dk...
> Jeg har følgende batchfil:
>
> ping noc.tele.dk > C:\giraf.txt
> if %ERRORLEVEL%==0 FOR /F "skip=10 tokens=6 delims==," %%i in
> (C:\giraf.txt)
> (
> if %i LEQ 100 echo Ping tiden mindre end eller 100
> if %i GTR 100 echo Ping tiden var mere end 100
> )
>

Mon ikke du skulle undlade linieskift efter "(C:\giraf.txt)" - ellers
er der jo ikke nogen "then"-kommando.


/klaus




Bertel Brander (10-11-2005)
Kommentar
Fra : Bertel Brander


Dato : 10-11-05 19:48

Ubbe wrote:
> Jeg kan ikke se fejlen? Den skulle jo gerne melde enten "Ping tiden mindre
> end eller 100" eller "Ping tiden var mere end 100"?
> Nogen gode idéer?

@echo off
ping www.google.com > C:\giraf.txt
if %ERRORLEVEL%==0 FOR /F "skip=10 tokens=6 delims==," %%i in
(C:\giraf.txt) do (
if %%i LEQ 100 echo Ping tiden mindre end eller 100
if %%i GTR 100 echo Ping tiden var mere end 100
)

linien fra if til og med ( efter do skal være én linie.

--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel

Ubbe (11-11-2005)
Kommentar
Fra : Ubbe


Dato : 11-11-05 11:13

> @echo off
> ping www.google.com > C:\giraf.txt
> if %ERRORLEVEL%==0 FOR /F "skip=10 tokens=6 delims==," %%i in
> (C:\giraf.txt) do (
> if %%i LEQ 100 echo Ping tiden mindre end eller 100
> if %%i GTR 100 echo Ping tiden var mere end 100
> )
>
> linien fra if til og med ( efter do skal være én linie.

Det var meget bedre, tak - også din linie med "if %%i LEQ .." hjalp. Men
selve outputtet er dog forkert. Hvis jeg sætter alle værdier til 5 og pinger
igen, så skriver den stadigt, at "Ping tiden mindre end eller 5" mens
outputtet af %%i = 21ms. Jeg går ud fra, at det er fordi 21ms opfattes som
en streng og at man ikke kan måle på om den er større eller mindre end
noget, men er der en måde at fjerne det "ms" fra variablen, så det kun er et
heltal (så "21ms" bliver til "21")?



Bertel Brander (11-11-2005)
Kommentar
Fra : Bertel Brander


Dato : 11-11-05 23:20

Ubbe wrote:

> Det var meget bedre, tak - også din linie med "if %%i LEQ .." hjalp. Men
> selve outputtet er dog forkert. Hvis jeg sætter alle værdier til 5 og pinger
> igen, så skriver den stadigt, at "Ping tiden mindre end eller 5" mens
> outputtet af %%i = 21ms. Jeg går ud fra, at det er fordi 21ms opfattes som
> en streng og at man ikke kan måle på om den er større eller mindre end
> noget, men er der en måde at fjerne det "ms" fra variablen, så det kun er et
> heltal (så "21ms" bliver til "21")?

@echo off
setlocal
ping www.google.com > C:\giraf.txt
if %ERRORLEVEL%==0 FOR /F "skip=10 tokens=6 delims==," %%i in
(C:\giraf.txt) do call :Process %%i
goto :eof

:Process
set xxx=%1
set xxx=%xxx:ms=%
if %xxx% LEQ 100 (
echo Ping tiden mindre end eller 100
) else (
echo Ping tiden var mere end 100
)
goto :eof

--
Absolutely not the best homepage on the net:
http://home20.inet.tele.dk/midgaard
But it's mine - Bertel

Klaus Jorgensen (12-11-2005)
Kommentar
Fra : Klaus Jorgensen


Dato : 12-11-05 20:14

Ubbe wrote:
>
> Det var meget bedre, tak - også din linie med "if %%i LEQ .." hjalp.
> Men selve outputtet er dog forkert. Hvis jeg sætter alle værdier til
> 5 og pinger igen, så skriver den stadigt, at "Ping tiden mindre end
> eller 5" mens outputtet af %%i = 21ms. Jeg går ud fra, at det er
> fordi 21ms opfattes som en streng og at man ikke kan måle på om den
> er større eller mindre end noget, men er der en måde at fjerne det
> "ms" fra variablen, så det kun er et heltal (så "21ms" bliver til
> "21")?

Brug "tokens=10" of "delims==m".


/klaus




Ubbe (14-11-2005)
Kommentar
Fra : Ubbe


Dato : 14-11-05 13:39

>> Det var meget bedre, tak - også din linie med "if %%i LEQ .." hjalp.
>> Men selve outputtet er dog forkert. Hvis jeg sætter alle værdier til
>> 5 og pinger igen, så skriver den stadigt, at "Ping tiden mindre end
>> eller 5" mens outputtet af %%i = 21ms. Jeg går ud fra, at det er
>> fordi 21ms opfattes som en streng og at man ikke kan måle på om den
>> er større eller mindre end noget, men er der en måde at fjerne det
>> "ms" fra variablen, så det kun er et heltal (så "21ms" bliver til
>> "21")?
>
> Brug "tokens=10" of "delims==m".

Denne virkede helt efter bogen, tak



Søg
Reklame
Statistik
Spørgsmål : 177507
Tips : 31968
Nyheder : 719565
Indlæg : 6408569
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste