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

[文本处理] [已解决] 批处理命令echo显示时如何忽略连接符?

[复制链接]
发表于 2013-7-10 21:41:55 | 显示全部楼层 |阅读模式
本帖最后由 pZjVa0 于 2013-7-13 17:20 编辑
  1. @echo off
  2. set /p text=请输入内容:
  3. echo %text%
  4. pause
复制代码
以上代码中,text的内容为不确定性

在不添加""(双引号) 的情况下,如何可以做到即使用户输入了带&(连接符)等特殊符号的情况下也可以正常显示出来

评分

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

查看全部评分

发表于 2013-7-10 21:51:46 | 显示全部楼层
变量延迟拓展
发表于 2013-7-10 22:05:43 | 显示全部楼层
  1. set a=abc^^^&qdj
  2. echo %a%
  3. pause
复制代码
 楼主| 发表于 2013-7-11 09:50:23 | 显示全部楼层
回复 3# 悬崖之树


    显示内容为不确定性。
 楼主| 发表于 2013-7-11 09:50:47 | 显示全部楼层
回复 2# Demon


    除了变量延迟之外呢?
发表于 2013-7-11 18:56:39 | 显示全部楼层
变量延迟方案:
  1. setlocal enabledelayedexpansion
  2. echo !text!
  3. endlocal
复制代码
虽然不明白变量延迟有什么不便,但也可以这样
  1. for /f "tokens=1* delims==" %%a in ('set text') do if %%a==text echo %%b
复制代码
发表于 2013-7-11 21:44:28 | 显示全部楼层
本帖最后由 悬崖之树 于 2013-7-11 21:45 编辑
  1. setlocal enabledelayedexpansion
  2. echo !text!
  3. endlocal
复制代码
是可以把text变量的内容原样输出,但是给text赋值就比较麻烦,如:
set text=abc^&ssm
不能做到输入什么就显示什么。
发表于 2013-7-11 21:45:01 | 显示全部楼层
回复 6# CrLf


    现在才知道用延迟变量可以达到这样。

如果%1有特殊符号要怎么写呢?
发表于 2013-7-12 03:05:10 | 显示全部楼层
回复 8# 522235677
  1. set /p"=%~1"<nul&echo;
复制代码
发表于 2013-7-12 22:49:51 | 显示全部楼层
回复 9# CrLf
  1. C:\Users\Admin>"F:\新建 Windows 批处理文件 (3).bat" 1&1
复制代码
依然不行啊
发表于 2013-7-12 23:35:28 | 显示全部楼层
回复 10# 522235677


    这是 shell 的参数解析 bug,传递参数时不将程序中的特殊符号进行转义处理,是 ms 不负责任,自家孩子都不关照
发表于 2013-7-13 08:55:49 | 显示全部楼层
回复  522235677


    这是 shell 的参数解析 bug,传递参数时不将程序中的特殊符号进行转义处理,是  ...
CrLf 发表于 2013-7-12 23:35


这个不是BUG,echo hello&world本来就应该解析为echo hello&world,Linux下的Shell也是如此。
发表于 2013-7-13 11:51:17 | 显示全部楼层
本帖最后由 523066680 于 2013-7-13 12:33 编辑

回复 1# pZjVa0


处理过程添加双引号,显示的时候不显示双引号
  1. @echo off
  2. set /p text=请输入内容:
  3. set /p in="%text%"<nul
  4. echo,
  5. pause
复制代码
请输入内容:C:\Users\Admin>"F:\新建 Windows 批处理文件 (3).bat" 1&1
C:\Users\Admin>"F:\新建 Windows 批处理文件 (3).bat" 1&1
请按任意键继续. . .


刚刚重新看帖才看到Crlf妞的写法。差不多吧

评分

参与人数 1技术 +1 收起 理由
pZjVa0 + 1 感谢分享

查看全部评分

 楼主| 发表于 2013-7-13 15:50:35 | 显示全部楼层
回复 13# 523066680


    最后请教一个,上面代码有办法可以用这种形式输出吗?
  1. 请输入内容:
  2. 你输入的内容是:xxxx
复制代码
在结果前面增加一段文字
 楼主| 发表于 2013-7-13 16:11:17 | 显示全部楼层
回复 13# 523066680
  1. @echo off
  2. set /p text=请输入内容:
  3. set /p in="你输入的内容是:"<nul
  4. set /p in="%text%"<nul
  5. echo,
  6. pause
复制代码
我试了一下,把代码改成这样后可以变成我想要的效果,不知道这样写是不是最好的方法呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 13:42 , Processed in 0.028150 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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