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

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

[复制链接]
发表于 2013-7-13 16:49:20 | 显示全部楼层
回复  523066680 我试了一下,把代码改成这样后可以变成我想要的效果,不知道这样写是不是最好的方法呢?
pZjVa0 发表于 2013-7-13 16:11



    施主醒目。
发表于 2013-7-13 18:28:40 | 显示全部楼层
仅显示吗
  1. @echo off
  2. set /p text=请输入内容:
  3. for /f "delims=" %%i in ("%text%") do echo 你输入的内容是:%%~i
  4. pause
复制代码

评分

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

查看全部评分

 楼主| 发表于 2013-7-13 19:02:30 | 显示全部楼层
回复 17# terse


    测试有效。非常感谢
发表于 2013-7-15 22:53:17 | 显示全部楼层
本帖最后由 wskwfkbdn 于 2013-7-15 23:11 编辑

@echo off
set /p text=请输入内容:
for /f "delims=" %%i in ("%text%") do echo %%~i
pause


基本上能处理较多较复杂带特殊字符,如有bug请帮忙改进;原创注明:

bug 1:引号问题
输入字符: "123456""  p自动关闭
输入字符: "123456"   显示 123456 ,因为引号被%%~i 去掉了,
请输入内容: ""123456""   显示结果为 :   "123456" ,特殊字符视情况而改。
 楼主| 发表于 2013-7-16 14:27:10 | 显示全部楼层
回复 17# terse
发表于 2013-7-16 15:30:04 | 显示全部楼层
回复 20# pZjVa0
对引号的情况还是敏感的
发表于 2013-7-16 16:25:46 | 显示全部楼层
回复 19# wskwfkbdn


    让我想起以前讨论过的批处理密码验证 http://bbs.bathome.net/viewthread.php?tid=10980
    引用 %变量% 时如果要保证通用性,恐怕只有两种思路:
1、用变量延迟或者其他手段让变量在语法解释之后展开
2、用 "%变量:"=%" 或 "%变量:"=""%" 的方式引用变量中的字符串
发表于 2013-7-17 09:25:17 | 显示全部楼层
发现我的帖子和17楼一样,今天才注意到,
发表于 2013-7-17 09:44:11 | 显示全部楼层

标题

回复 22# CrLf
    特殊字符处理除了引号的bug,基本能显示和echo输出,回头想下解决方案,帖子我看了,有说到bat加密,特殊字符,那都是障眼法,对付非老手的可以OK
发表于 2013-7-18 22:54:57 | 显示全部楼层
回复 22# CrLf


    再度回顾老问题,现在来解释以下,我测试过了可以不用转义而能兼容任意字符,
  但是唯一的一个bug就是字符行尾不能是1个引号,3、5、7,......以此类推p运行就会有问题,如是双个引号,4、6个都不会再for里面出错,并且成功显示容易特殊字符
  1. @echo off
  2. :AA
  3. cls
  4. set "jjdd=~!@#¥%……&*()《》<>{}[]_+-|\?/"
  5. set /p jjdd=请输入字符(包含任意特殊字符):
  6. for /f "delims=" %%a in ("%jjdd%") do echo. %%a
  7. pause&GOTO AA
复制代码
请测试:
发表于 2013-7-19 00:04:08 | 显示全部楼层
回复 25# wskwfkbdn


    不光是单数引号会出错,双数引号也存在这种情况:
  1. for /f "delims=" %%a in ("&"&"&") do echo. %%a
复制代码
发表于 2013-7-19 00:25:30 | 显示全部楼层
看来变量延迟应付了
  1. @echo off
  2. :AA
  3. cls
  4. set "jjdd=~!@#¥%……&*()《》<>{}[]_+-|\?/"
  5. set /p jjdd=请输入字符(包含任意特殊字符):
  6. cmd /v /c echo !jjdd!
  7. pause&GOTO AA
复制代码
发表于 2013-7-19 16:02:16 | 显示全部楼层
回复 26# CrLf
    是滴,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 12:23 , Processed in 0.022127 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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