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

[文本处理] [已解决]批处理怎么在变量中自动加上转义符

本帖最后由 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不是有效的命令。
现在我就想能自动加入 ^ 这个符号。或者有没有更好的办法呢?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

更好的办法是:
start "" "%a%"

TOP

回复 2# CrLf


    我现在用的是%2的参数,而不是%a%了,那我应该怎么改呢?
start "" %2  
%2 中包含了& 符号

TOP

回复 3# 522235677


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

TOP

回复 4# CrLf


    这个还真的不行

TOP

你可能在输入执行的过程中就出现问题了,所以,在set /p 段就开始加双引号,然后在执行段start也加双引号。
  1. @echo off
  2. set /p  "input=输入网址:"
  3. start ""  "%input%"
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 5# 522235677


    不行有很多种,哪种不行

TOP

回复 6# cjiabing


   你的这个方法还真的可以
但我现在用的是%2的参数,那我应该怎么改呢?
start "" %2  
%2 中包含了& 符号

TOP

"%~2"
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 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>

TOP

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

评分人数

TOP

返回列表