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

[其他] 请问下批处理里面什么时候加上引号,什么时候不加?

本帖最后由 mar5 于 2011-6-23 14:23 编辑

看到一些对变量引用的时候,有些加了有些没加,请高手帮我归纳下,应该在什么时候加?

@echo off
set sum=0
call :sub sum 10 20 35
echo 数据求和结果:%sum%
pause
:sub
rem 参数1为返回变量名称
set /a %1=%1+%2
shift /2
if not "%2"=="" goto sub
goto :eof

比如这个地方的%2为啥要加双引号
1

评分人数

    • zm900612: 代码不止一行时请用code括起来PB -2

  1. if not "%2"=="" goto sub
  2. ::这句中的引号有双重作用,既能转义%2中可能存在的特殊字符,也起到了分隔参数的作用,最关键的是用于分隔参数,避免%2为空时出现的语法错误
复制代码

TOP

6# mar5


请把代码更新到顶楼,以便他人查看。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

4# Hello123World

你是用echo %n%查看的吧?建议用set n或者echo !n!来查看这种存在特殊命令的变量

TOP

@echo off
set sum=0
call :sub sum 10 20 35
echo 数据求和结果:%sum%
pause
:sub
rem 参数1为返回变量名称
set /a %1=%1+%2
shift /2
if not "%2"=="" goto sub
goto :eof
看下这个地方   这里%2为啥要加引号呢?这里应该是对变量的引用吧?

TOP

恩  以后学习中我会注意下的  谢了

TOP

  1. set n=^^
  2. ::这条出错,显示more?
  3. set "n=^^"
  4. ::我本以为这条显示^^,结果却显示^,^的优先级高于" ?
  5. ::这两条的结果也是完全不同的
复制代码

TOP

双引号是一种特殊的转义符,用于把特殊符号转义成普通字符,也能够将命令中的参数区分开

双引号作为参数分隔符的例子:
  1. findstr .* 1.txt 2.txt
  2. findstr ".* 1.txt" 2.txt
  3. ::这两条的结果是截然不同的
复制代码
双引号作为转义符的例子:
  1. set n=^^
  2. set "n=^^"
  3. ::这两条的结果也是完全不同的
复制代码

TOP

当做字符串时,就需要加,特别是超过8位或是有空格等特殊符号的。
享受批处理的神奇!!!

TOP

返回列表