Doing arithmetic and passing it to the next command
- by neurolysis
I know how to do this in /bin/sh, but I'm struggling a bit in Windows.
I know you can do arithmetic on 32-bit signed integers with
SET /a 2+2
4
But how do I pass this to the next command? For example, the process I want to perform is as follows.
Consumer editions of Windows have no native automated sleep function (I believe?) -- the best way to perform a sleep is to use PING in association with the -n switch to get that many seconds, minus one, of sleep. The following command is effective for a silent sleep:
PING localhost -n 3 > NUL
But I want to alias this into a sleep command. I'd like to have it elegant so that you enter the actual number of seconds you want to sleep after the command, right now I can do
DOSKEY SLEEP=PING 127.0.0.1 -n $1 > NUL
Which works, but it's always 1 second less than your input, so if you wanted to sleep for one second you would have to use the command SLEEP 2. That's not exactly ideal.
Is there some way for me to pass the arithmetic of $1+1 and pass it on to the next command in Windows? I assume there is some way of using STDOUT...