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

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

[复制链接]
发表于 2011-6-22 17:44:54 | 显示全部楼层 |阅读模式
本帖最后由 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为啥要加双引号

评分

参与人数 1PB -2 收起 理由
zm900612 -2 代码不止一行时请用code括起来

查看全部评分

发表于 2011-6-22 17:55:41 | 显示全部楼层
当做字符串时,就需要加,特别是超过8位或是有空格等特殊符号的。
发表于 2011-6-22 18:24:33 | 显示全部楼层
双引号是一种特殊的转义符,用于把特殊符号转义成普通字符,也能够将命令中的参数区分开

双引号作为参数分隔符的例子:
  1. findstr .* 1.txt 2.txt
  2. findstr ".* 1.txt" 2.txt
  3. ::这两条的结果是截然不同的
复制代码
双引号作为转义符的例子:
  1. set n=^^
  2. set "n=^^"
  3. ::这两条的结果也是完全不同的
复制代码
发表于 2011-6-22 18:57:44 | 显示全部楼层
  1. set n=^^
  2. ::这条出错,显示more?
  3. set "n=^^"
  4. ::我本以为这条显示^^,结果却显示^,^的优先级高于" ?
  5. ::这两条的结果也是完全不同的
复制代码
 楼主| 发表于 2011-6-22 19:41:12 | 显示全部楼层
恩  以后学习中我会注意下的  谢了
 楼主| 发表于 2011-6-22 19:45:13 | 显示全部楼层
@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为啥要加引号呢?这里应该是对变量的引用吧?
发表于 2011-6-22 22:57:26 | 显示全部楼层
4# Hello123World

你是用echo %n%查看的吧?建议用set n或者echo !n!来查看这种存在特殊命令的变量
发表于 2011-6-22 23:44:16 | 显示全部楼层
6# mar5


请把代码更新到顶楼,以便他人查看。
发表于 2011-6-23 15:12:35 | 显示全部楼层
  1. if not "%2"=="" goto sub
  2. ::这句中的引号有双重作用,既能转义%2中可能存在的特殊字符,也起到了分隔参数的作用,最关键的是用于分隔参数,避免%2为空时出现的语法错误
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 15:30 , Processed in 0.019981 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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