问个关于BAT批处理的问题

if %bian%=="Q" bian="abc"
如果变量bian的值等于字符Q,则把字符串abc赋值给变量bian,这有错误吗?

这样吧

我有几个建议

    查看%bian% 是不是 获取了值 

    这样改改看看

    ECHO %bian%&PAUSE

    if %bian%=="Q" bian="abc"

    先看看%bian%的值是不是 Q

    如果 不是 可能问题在于 变量的延时

    在批处理 第一行 加入以下代码

    setlocal EnableDelayedExpansion

    并将 %bian% 改为 !bian! (所有的%% 引用 全部 改为 !!)

    按照你的逻辑 代码本身也有错误

    建议这样修改

    IF /I %bian%=="Q" SET bian="abc"

    前提入上所说 %bian% 已经 获取了 相应的值

    综上所述

    代码这样改改 

    在第一行 加 setlocal EnableDelayedExpansion

    并将 %bian% 改为 !bian! (所有的%% 引用 全部 改为 !! 例如 %bian%  改为 !bian!)

    将     if %bian%=="Q" bian="abc"

    改为  IF /I %bian%=="Q" SET bian="abc"&ECHO !bian! &PAUSE


    如果 显示变量%bian%的值为 Q  而 不是 “Q” 

    那么 IF /I %bian%==Q SET bian="abc"&ECHO !bian! &PAUSE

    或者 IF /I “%bian%”==“Q” SET bian="abc"&ECHO !bian! &PAUSE

    另外 DOS 对 数据类型要求不强

    如果 是想把 abc 赋值给 bian 而不是  把“abc” 赋值给 bian 请不要加“”

    或者 这样 SET “bian=abc”

    IF 后面 是可以加 赋值 语句的……


       祝你好运

追问

怎么将变量的值定义为回车?

追答

这个 不知道 貌似是不可以的 VBS应该可以
你想干嘛 可以说说 或者可以给你提供其他方案
DOS 毕竟 有他的局限性 ……
另外 上面的方案有效吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-02
批处理默认的类型就是字符串,不需要加引号,如果加了引号,那就变成和
["Q"]这个带引号的字符串比较了,所以肯定不相等
另外你条件之后的变量设置应该加上set,并且你如果要设置的是abc也同样不可以加引号。
if %bian%==Q set bian=abc追问

怎么将变量的值定义为回车?

追答

你所说的回车是指?
如果是想如果直接回车就满足的话,那就是变量的值等于空白了
也就是
if %bian%== set bian=abc

本回答被提问者和网友采纳
第2个回答  2013-06-02
if "%bian%"=="Q" goto setabc
...

:setabc
set bian="abc"追问

if语句后面不能跟赋值语句啊?

追答

set bian=Q
if .%bian%.==.Q. set bian="abc"
echo %bian%

D:\Workspace> test.bat

D:\Workspace> set bian=Q

D:\Workspace> if .Q. == .Q. set bian="abc"

D:\Workspace> echo "abc"
"abc"

D:\Workspace>

追问

怎么将变量的值定义为回车?

追答

我理解你所说的“变量的值定义为回车”是指前面的输入变量赋值直接回车,这样的话其实变量值为空串,可以用
if .%bian%.==..
来判断

第3个回答  2013-06-02
if "%bian%"="Q"追问

还是不行

相似回答