这样吧
我有几个建议
查看%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 毕竟 有他的局限性 ……
另外 上面的方案有效吗?
怎么将变量的值定义为回车?
追答你所说的回车是指?
如果是想如果直接回车就满足的话,那就是变量的值等于空白了
也就是
if %bian%== 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%.==..
来判断
还是不行