找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30277|回复: 9

[数值计算] [已解决]bat中单引号如何转义

[复制链接]
发表于 2015-4-8 19:12:39 | 显示全部楼层 |阅读模式
本帖最后由 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

请大神帮助!!!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-4-8 19:27:49 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%a in ('echo 40*^(1-80*0.01^)^|bc') do echo %%a
  3. pause
复制代码
 楼主| 发表于 2015-4-8 19:32:03 | 显示全部楼层
回复 2# pcl_test


    不好意思,前面的例子举错了!应该是这样的!

debug>echo 40*(1-99*0.01)|bc|awk '{printf "%.2f",$0}'
0.40

后面加 awk 是为了将 .40 格式化为 0.40

所以for /f 体里必须加 awk
发表于 2015-4-8 19:35:09 | 显示全部楼层
  1. @echo off
  2. for /f %%i in ('echo 40*^(1-80*0.01^) ^| bc ^| gawk "{printf "%%.2f",$0}"') do (
  3.     echo,%%i
  4. )
  5. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1

查看全部评分

发表于 2015-4-8 19:38:51 | 显示全部楼层
本帖最后由 CrLf 于 2015-4-8 21:04 编辑

windows 的 awk 要用 " 囊括参数
另外,既然都用到 awk,就不需要 bc 了
  1. awk "BEGIN{printf "%%.2f",40*(1-99*0.01)}"
复制代码
  1. for /f %%x in ('awk "BEGIN{printf "%%.2f",40*(1-99*0.01)}"') do echo %%x
复制代码
发表于 2015-4-8 19:40:23 | 显示全部楼层
  1. @echo off & setlocal enabledelayedexpansion
  2. 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)
  3. pause
复制代码
 楼主| 发表于 2015-4-8 22:48:50 | 显示全部楼层
回复 6# pcl_test


    你的思路也挺好,简单明了! 32 个赞给你!
 楼主| 发表于 2015-4-8 22:51:14 | 显示全部楼层
回复 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
发表于 2015-4-8 22:59:43 | 显示全部楼层
问题得到解决后请在标题最前面注明[已解决]哟
http://www.bathome.net/thread-3473-1-1.html
 楼主| 发表于 2015-4-9 11:59:02 | 显示全部楼层
回复 5# CrLf


    到底还是大神呀!把命令行玩的这么溜!128个赞给你!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 08:50 , Processed in 0.011168 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表