请问在DOS批处理文件中如何将一个命令的输出赋值给一个变量

时间:2021-12-03 23:11:31
比如我希望将date /t命令的输出结果赋值给一个环境变量。

谢谢!

17 个解决方案

#1


for /f %i in ('date /t') do set youvar=%i

#2


批处理中for /f %%i in ('date /t') do set youvar=%%i

#3


楼上的似乎不行

#4


WINXP测试通过:
CMD下运行:
for /f %i in ('date /t') do set yourvar=%i
echo %yourvar%
可显示需要的值
批处理中更换%i为%%i也一样

#5


学习ING……

#6


如果这个命令的返回是单行的没什么问题

要是多行的话他只会set最后一行

所以我说好像有点问题

#7


aspower说得有理,不过DATE /T只会有一行值,所以不会有问题

#8


DATE /T的确可以

呵呵

不仅仅是多行 如果中途有暂停的也不可以

比如time

只是讨论讨论 觉得还是>重定向到一个文件比较好

#9


time /t也是单行
但如果是多行,可以利用find来过滤
如 time /t |find ":"

或者for循环中加个GOTO跳出循环,如
@echo off
for /l %%i in (1,1,10) do ( echo %%i && goto end)
:end

对于暂停的内容,可以通过管道或重定向来进行自动应答

#10


如果我要把屏幕输入的一个值给一个变量呢?

#11


up

#12


to xp_ts:

set /p youvar="请输入值:"

#13


空格后面的值没有取到。

#14


建议还是直接使用环境变量: %date% %time%
echo %date% %time%

#15


我想要根据VER来判断WINDOWS的版本,然后执行不同的操作,这个如何来取?

#16


ver | find "XP"

#17


已经取到,多谢提醒。

#1


for /f %i in ('date /t') do set youvar=%i

#2


批处理中for /f %%i in ('date /t') do set youvar=%%i

#3


楼上的似乎不行

#4


WINXP测试通过:
CMD下运行:
for /f %i in ('date /t') do set yourvar=%i
echo %yourvar%
可显示需要的值
批处理中更换%i为%%i也一样

#5


学习ING……

#6


如果这个命令的返回是单行的没什么问题

要是多行的话他只会set最后一行

所以我说好像有点问题

#7


aspower说得有理,不过DATE /T只会有一行值,所以不会有问题

#8


DATE /T的确可以

呵呵

不仅仅是多行 如果中途有暂停的也不可以

比如time

只是讨论讨论 觉得还是>重定向到一个文件比较好

#9


time /t也是单行
但如果是多行,可以利用find来过滤
如 time /t |find ":"

或者for循环中加个GOTO跳出循环,如
@echo off
for /l %%i in (1,1,10) do ( echo %%i && goto end)
:end

对于暂停的内容,可以通过管道或重定向来进行自动应答

#10


如果我要把屏幕输入的一个值给一个变量呢?

#11


up

#12


to xp_ts:

set /p youvar="请输入值:"

#13


空格后面的值没有取到。

#14


建议还是直接使用环境变量: %date% %time%
echo %date% %time%

#15


我想要根据VER来判断WINDOWS的版本,然后执行不同的操作,这个如何来取?

#16


ver | find "XP"

#17


已经取到,多谢提醒。