|
| 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
| |
|
|