set A=2 && echo %A%
这不会在窗口中将A回显为2。有什么办法可以做到吗?是否可以设置环境变量并在单行批处理脚本中回显它?
A=2 ; echo $A
在bash中工作。我想在Windows类似的行为
set A=2 && echo %A%
这不会在窗口中将A回显为2。有什么办法可以做到吗?是否可以设置环境变量并在单行批处理脚本中回显它?
A=2 ; echo $A
在bash中工作。我想在Windows类似的行为
我敢肯定有很多方法可以做到这一点,这里有两个:
setlocal ENABLEDELAYEDEXPANSION&set "foo=bar baz"&echo.!foo!&endlocal
set "foo=bar baz"&for /F "tokens=1,* delims==" %%A in ('set foo') do if "%%~A"=="foo" echo.%%B
编辑:新增检查为第二个解决方案“过滤”设置结果,感谢JohannesRössel
添加到@Anders answers,我调整了自己的解决方案的东西,给你更多的灵活性:
set foo=bar&for /f %a in ('echo ^%foo^%') do @echo %a
输出:
bar
这使您可以做字符串替换过:
set foo=bar&for /f %a in ('echo ^%foo^:a^=o^%') do @echo %a
输出:
bor
编辑:添加一些插入修复@ jeb的评论。
这不可靠。如果再次运行它,但将'bar'更改为'ccc',它仍会回显'bar' – jeb 2017-02-10 14:32:44
你为什么要这样做?对我来说,这看起来像是一个小小的风格问题。 – 2010-04-28 18:43:26
可能有必要在别名?或者在生成其他脚本的脚本中编写更简单的代码。 – 2010-04-28 18:55:24