[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 13# 523066680


    最后请教一个,上面代码有办法可以用这种形式输出吗?
  1. 请输入内容:
  2. 你输入的内容是:xxxx
复制代码
在结果前面增加一段文字

TOP

本帖最后由 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

评分人数

TOP

回复  522235677


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


这个不是BUG,echo hello&world本来就应该解析为echo hello&world,Linux下的Shell也是如此。

TOP

回复 10# 522235677


    这是 shell 的参数解析 bug,传递参数时不将程序中的特殊符号进行转义处理,是 ms 不负责任,自家孩子都不关照

TOP

回复 9# CrLf
  1. C:\Users\Admin>"F:\新建 Windows 批处理文件 (3).bat" 1&1
复制代码
依然不行啊

TOP

回复 8# 522235677
  1. set /p"=%~1"<nul&echo;
复制代码

TOP

回复 6# CrLf


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

如果%1有特殊符号要怎么写呢?

TOP

本帖最后由 悬崖之树 于 2013-7-11 21:45 编辑
  1. setlocal enabledelayedexpansion
  2. echo !text!
  3. endlocal
复制代码
是可以把text变量的内容原样输出,但是给text赋值就比较麻烦,如:
set text=abc^&ssm
不能做到输入什么就显示什么。
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

变量延迟方案:
  1. setlocal enabledelayedexpansion
  2. echo !text!
  3. endlocal
复制代码
虽然不明白变量延迟有什么不便,但也可以这样
  1. for /f "tokens=1* delims==" %%a in ('set text') do if %%a==text echo %%b
复制代码

TOP

回复 2# Demon


    除了变量延迟之外呢?

TOP

回复 3# 悬崖之树


    显示内容为不确定性。

TOP

  1. set a=abc^^^&qdj
  2. echo %a%
  3. pause
复制代码
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

变量延迟拓展

TOP

返回列表