Board logo

标题: [文本处理] [已解决]批处理怎么在变量中自动加上转义符 [打印本页]

作者: 522235677    时间: 2012-7-31 10:49     标题: [已解决]批处理怎么在变量中自动加上转义符

本帖最后由 522235677 于 2013-4-8 22:05 编辑

比如下面这个,网址中包含了 &  符号,打开后的网页根本就不对

set /P a=输入网址
start "" %a%

比如打开 http://www.baidu.com/s?tn=baiduhome_pg&111
然后打开了 http://www.baidu.com/s?tn=baiduhome_pg  下面有一行提示111不是有效的命令。
现在我就想能自动加入 ^ 这个符号。或者有没有更好的办法呢?
作者: CrLf    时间: 2012-7-31 10:53

加转义符:
start "" %a:&=^&%

更好的办法是:
start "" "%a%"
作者: 522235677    时间: 2012-7-31 14:37

回复 2# CrLf


    我现在用的是%2的参数,而不是%a%了,那我应该怎么改呢?
start "" %2  
%2 中包含了& 符号
作者: CrLf    时间: 2012-7-31 16:49

回复 3# 522235677


    那就简单用双引号吧:
  1. start "" "%~2"
复制代码

作者: 522235677    时间: 2012-8-1 15:32

回复 4# CrLf


    这个还真的不行
作者: cjiabing    时间: 2012-8-1 17:56

你可能在输入执行的过程中就出现问题了,所以,在set /p 段就开始加双引号,然后在执行段start也加双引号。
  1. @echo off
  2. set /p  "input=输入网址:"
  3. start ""  "%input%"
复制代码

作者: CrLf    时间: 2012-8-1 18:27

回复 5# 522235677


    不行有很多种,哪种不行
作者: 522235677    时间: 2012-8-3 16:52

回复 6# cjiabing


   你的这个方法还真的可以
但我现在用的是%2的参数,那我应该怎么改呢?
start "" %2  
%2 中包含了& 符号
作者: cjiabing    时间: 2012-8-3 19:48

"%~2"
作者: 522235677    时间: 2012-8-4 09:50

回复 9# cjiabing

    C:\Users\Administrator>C:\Users\Administrator\Desktop\b.bat 1 http://www.baidu.c
om/s?wd=%E6%89%B9%E5%A4%84%E7%90%86%E4%B9%8B%E5%AE%B6&rsv_spt=1&issp=1&rsv_bp=0&
ie=utf-8&tn=baiduhome_pg&oq=pichuliz&rsp=0&f=3&inputT=10313]
Loading...
1 http://www.baidu.com/s?wd=%E6%89 ... 6%E4%B9%8B%E5%AE%B6
'rsv_spt' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'issp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'rsv_bp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'ie' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'tn' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'oq' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'rsp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'f' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'inputT' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator>
作者: CrLf    时间: 2012-8-4 17:01

本帖最后由 CrLf 于 2012-8-4 17:17 编辑

回复 10# 522235677


调用时应传递已经转义的参数,否则脚本实际上无法接收到参数,因为参数在脚本还没执行的时候就被解释为以 & 连接的多条命令执行了:
  1. ::模拟一下 t.bat 被调用的方式
  2. cmd /c t.bat "" 你的&参数
  3. ::这里 cmd 的理解是 cmd /c (t.bat "" 你的)&(参数)
复制代码
参考类似讨论:
http://bbs.bathome.net/thread-7509-1-1.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2