Board logo

标题: [系统相关] 代码中的if命令为何出错 [打印本页]

作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 11:41     标题: 代码中的if命令为何出错

本帖最后由 CrLf 于 2011-11-25 13:05 编辑
  1. @echo off
  2. for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get Model') do call set B=%%B%% %%i
  3. echo%B%
  4. if  %%B%% == Hitachi HDS721050CLA362 goto A
  5. echo hello
  6. pause
  7. :A
  8. echo 谢谢
  9. pause
复制代码
Hitachi HDS721050CLA362硬盘型号改为你的硬盘型号,
if的等同命令表示有错误,望高手赐教。。。。
作者: jellyhk    时间: 2011-11-25 12:04

set B=%%B%% %%i
是什么意思,给讲下行不?学学习!
另外if 中字符有空格是不是要把""加起吧!你加""试
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 12:20

回复 2# jellyhk
set B=%%B%% 是通过wmic 获得的变量,就是硬盘的型号
if中有空,双引号我加过,还是不行,帮忙调试一下,谢谢!
作者: jellyhk    时间: 2011-11-25 12:34

呵呵!我还不明白%%B%% 是什么!为什么要4个%,你是不是想把%b%当一个变量?

另外我运行的命令wmic DISKDRIVE get Model的结果是!你想要干什么?就那我这图说!
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 12:52

回复 4# jellyhk

呵呵,你可以把%B%看作变量,wmic DISKDRIVE get Model直接在dos里是不完整的语句,
你试试
@echo off

for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get Model') do call set B=%%B%% %%i

echo%B%
pause


代码生成批处理.bat
我那个if命令的等同表示方法有错误,if我不是很熟悉,所以向你们赐教,谢谢!
作者: jellyhk    时间: 2011-11-25 12:54

这样写啊
for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get Model') do echo %%i
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 12:58

回复 6# jellyhk
不错,更简洁,但是我要处理下一步if命令,必须要一个参数来表示变量Model啊,有什么好建议啊???
作者: jellyhk    时间: 2011-11-25 13:02

这样你把你的运行结果搞个图上来更直接明了!你在说你要干什么!
行不!
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 13:10

回复 8# jellyhk
  1. @echo off
  2. for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get Model') do call set B=%%B%% %%i
  3. echo %B%
  4. pause
  5. if /i "%B%"=="自己硬盘的型号" goto A
  6. echo 对不起
  7. pause
  8. :A
  9. ECHO 恭喜
  10. pause
复制代码
如果你的硬盘的型号等于"自己硬盘的型号"则出现恭喜结果
如果不对则出现对不起的结果
作者: jellyhk    时间: 2011-11-25 13:13

你出现的问题是不是2个结果都出?
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 13:14

回复 10# jellyhk

对,因为if命令出错,所以才会出现两个结果啊。。。
作者: jellyhk    时间: 2011-11-25 13:17

哈哈!搞半天是这个问题!郁闷了!
是你写的不对!
echo 对不起               
pause
:A
ECHO 恭喜
pause
--------

---echo 对不起               
pause&&exit
:A
ECHO 恭喜
pause&&exit
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 13:33

回复 12# jellyhk


    还是有问题,就是我要的结果是“恭喜”
出现“对不起”是if语句还有问题
作者: jellyhk    时间: 2011-11-25 13:46

回复  jellyhk
不错,更简洁,但是我要处理下一步if命令,必须要一个参数来表示变量Model啊,有什么好建议 ...
zhzhbzhzhbzhzhb 发表于 2011-11-25 12:58

你就写在for语句里!
---
我还是没搞懂啊!
这样你把for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get Model') do echo %%i
运行结果发上来!
在cmd 里运行wmic DISKDRIVE get Model
发上来!
2张图
作者: Hello123World    时间: 2011-11-25 14:08

if  %%B%% == Hitachi HDS721050CLA362 goto A

改为

if  %B% == Hitachi HDS721050CLA362 goto A
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 14:51

回复 14# jellyhk


    朋友,你打开记事本把命令贴进去,另存为后缀名为*.bat的批处理就行,试试看!
作者: zhzhbzhzhbzhzhb    时间: 2011-11-25 14:52

回复 15# Hello123World

群主,不行啊,你帮忙调试一下,谢谢!
作者: powerbat    时间: 2011-11-26 00:50

标签 :A 上面加一行 exit /b 或者 goto :eof




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2