Microsoft Backticks
September 22, 2005 11:49 PM Subscribe
How do I get the ouput of a windows console program / script into a batch file variable?
Unix user here, trying to translate a shell script into a batch file that will run in a Windows command shell environment. I need to get the output of a program or script into a variable.
In a Unix shell it is easy : var=`program`, but I have not been able to figure out how to do the same in a batch file.
Unix user here, trying to translate a shell script into a batch file that will run in a Windows command shell environment. I need to get the output of a program or script into a variable.
In a Unix shell it is easy : var=`program`, but I have not been able to figure out how to do the same in a batch file.
You might consider just shipping your script with a Windows version of bash. It'll make your life a lot easier.
posted by grouse at 7:02 AM on September 23, 2005
posted by grouse at 7:02 AM on September 23, 2005
Sad to say, but Windows batch language is not much enhanced from its roots in MS-DOS, when it was an operating system that fit on a 360 kb floppy.
If you want to do anything substantial, you'll have to use an external scripting language or command shell. The above suggestion about using a windows implementation of the BASH shell is a good one. If you don't want Microsoft to be dissapointed with you, you can use Windows Scripting Host.
posted by curtm at 7:21 AM on September 23, 2005
If you want to do anything substantial, you'll have to use an external scripting language or command shell. The above suggestion about using a windows implementation of the BASH shell is a good one. If you don't want Microsoft to be dissapointed with you, you can use Windows Scripting Host.
posted by curtm at 7:21 AM on September 23, 2005
from a command prompt "ping yahoo.com > c:\ping.txt" works. It does not work from the Run box. You want to specify the directory path to the save location. I haven't taken the time to figure out how Windows selects what directory is current, but it's certainly not always the one I would expect.
posted by theora55 at 7:26 AM on September 23, 2005
posted by theora55 at 7:26 AM on September 23, 2005
Best answer: You can probably do this in an XP batch file. Read the help for the "for" statement,
There is a whole bunch of useful information hidden in help strings from the various CMD.EXE builtins, like
posted by soundslikeobiwan at 8:26 AM on September 23, 2005
for /?The example there is:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %iWhich prints the environment variable names without their values. You can fool with the delimiters to get different token parsing.
There is a whole bunch of useful information hidden in help strings from the various CMD.EXE builtins, like
set /? if /? call /?You'll have to think differently than bash, but it's pretty powerful.
posted by soundslikeobiwan at 8:26 AM on September 23, 2005
The trick used by many people is setting an environment variable, and then using that. There is just no other variable available to use in a batch file.
Here's an example from a batch file I have on a Win2000 machine to get the date.
-------------------------------------------------------------
@echo off
SET %%PATH = "c:\winnt\system32\"
For /f "tokens=1-7 delims=:/-, " %%i in ('echo exit^|cmd /q /k"prompt $D $T"') do (
For /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (
set dow=%%i
set %%a=%%j
set %%b=%%k
set %%c=%%l
set hh=%%m
set min=%%n
set ss=%%o
)
)
SET YY=%YY:~2,2%
REM Let's see the result.
For %%i in (dow dd mm yy hh min ss) do set %%i
posted by stovenator at 3:02 PM on September 23, 2005
Here's an example from a batch file I have on a Win2000 machine to get the date.
-------------------------------------------------------------
@echo off
SET %%PATH = "c:\winnt\system32\"
For /f "tokens=1-7 delims=:/-, " %%i in ('echo exit^|cmd /q /k"prompt $D $T"') do (
For /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (
set dow=%%i
set %%a=%%j
set %%b=%%k
set %%c=%%l
set hh=%%m
set min=%%n
set ss=%%o
)
)
SET YY=%YY:~2,2%
REM Let's see the result.
For %%i in (dow dd mm yy hh min ss) do set %%i
posted by stovenator at 3:02 PM on September 23, 2005
« Older How can I decide if I'm management material? | Why do a majority of gay men speak in a camp voice... Newer »
This thread is closed to new comments.
posted by rolypolyman at 5:45 AM on September 23, 2005