标题: [数值计算] [已解决]bat中单引号如何转义 [打印本页]
作者: shootman2 时间: 2015-4-8 19:12 标题: [已解决]bat中单引号如何转义
本帖最后由 shootman2 于 2015-4-13 21:22 编辑
如下表达式中的单引号如何转义
如下表达式在外层运行正常
debug>echo 40*(1-80*0.01)|bc|awk '{printf "%.2f",$0}'
8.00
但是嵌入到for /f体中就不行了,貌似是需要对单引号进行转义,然后就不会了
for /f %%x in ('******') do echo %%x
请大神帮助!!!
作者: pcl_test 时间: 2015-4-8 19:27
- @echo off
- for /f "delims=" %%a in ('echo 40*^(1-80*0.01^)^|bc') do echo %%a
- pause
复制代码
作者: shootman2 时间: 2015-4-8 19:32
回复 2# pcl_test
不好意思,前面的例子举错了!应该是这样的!
debug>echo 40*(1-99*0.01)|bc|awk '{printf "%.2f",$0}'
0.40
后面加 awk 是为了将 .40 格式化为 0.40
所以for /f 体里必须加 awk
作者: DAIC 时间: 2015-4-8 19:35
- @echo off
- for /f %%i in ('echo 40*^(1-80*0.01^) ^| bc ^| gawk "{printf \"%%.2f\",$0}"') do (
- echo,%%i
- )
- pause
复制代码
作者: CrLf 时间: 2015-4-8 19:38
本帖最后由 CrLf 于 2015-4-8 21:04 编辑
windows 的 awk 要用 " 囊括参数
另外,既然都用到 awk,就不需要 bc 了- awk "BEGIN{printf \"%%.2f\",40*(1-99*0.01)}"
复制代码
- for /f %%x in ('awk "BEGIN{printf \"%%.2f\",40*(1-99*0.01)}"') do echo %%x
复制代码
作者: pcl_test 时间: 2015-4-8 19:40
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('echo 40*^(1-99*0.01^)^|bc') do set "n=%%a" &if "!n:~,1!" == "." (echo,0%%a) else (echo,%%a)
- pause
复制代码
作者: shootman2 时间: 2015-4-8 22:48
回复 6# pcl_test
你的思路也挺好,简单明了! 32 个赞给你!
作者: shootman2 时间: 2015-4-8 22:51
回复 4# DAIC
你使用gawk实现了,虽然我不知道gawk和awk的却别,但是我用awk也实现了,感谢大神!
debug>for /f "delims=" %x in ('echo 40*^(1-99*0.01^)^|bc^|awk "{printf \"%.2f\",$0}"') do echo %x
debug>echo 0.40
0.40
作者: pcl_test 时间: 2015-4-8 22:59
问题得到解决后请在标题最前面注明[已解决]哟
http://www.bathome.net/thread-3473-1-1.html
作者: shootman2 时间: 2015-4-9 11:59
回复 5# CrLf
到底还是大神呀!把命令行玩的这么溜!128个赞给你!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |