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

[系统相关] 代码中的if命令为何出错

[复制链接]
发表于 2011-11-25 11:41:31 | 显示全部楼层 |阅读模式
本帖最后由 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的等同命令表示有错误,望高手赐教。。。。
发表于 2011-11-25 12:04:40 | 显示全部楼层
set B=%%B%% %%i
是什么意思,给讲下行不?学学习!
另外if 中字符有空格是不是要把""加起吧!你加""试
 楼主| 发表于 2011-11-25 12:20:58 | 显示全部楼层
回复 2# jellyhk
set B=%%B%% 是通过wmic 获得的变量,就是硬盘的型号
if中有空,双引号我加过,还是不行,帮忙调试一下,谢谢!
发表于 2011-11-25 12:34:59 | 显示全部楼层
呵呵!我还不明白%%B%% 是什么!为什么要4个%,你是不是想把%b%当一个变量?

另外我运行的命令wmic DISKDRIVE get Model的结果是!你想要干什么?就那我这图说!
 楼主| 发表于 2011-11-25 12:52:15 | 显示全部楼层
回复 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我不是很熟悉,所以向你们赐教,谢谢!

评分

参与人数 1PB -2 收起 理由
CrLf -2 请把超过一行的代码用 code 括起来

查看全部评分

发表于 2011-11-25 12:54:52 | 显示全部楼层
这样写啊
for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get Model') do echo %%i
 楼主| 发表于 2011-11-25 12:58:55 | 显示全部楼层
回复 6# jellyhk
不错,更简洁,但是我要处理下一步if命令,必须要一个参数来表示变量Model啊,有什么好建议啊???
发表于 2011-11-25 13:02:46 | 显示全部楼层
这样你把你的运行结果搞个图上来更直接明了!你在说你要干什么!
行不!
 楼主| 发表于 2011-11-25 13:10:54 | 显示全部楼层
回复 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
复制代码
如果你的硬盘的型号等于"自己硬盘的型号"则出现恭喜结果
如果不对则出现对不起的结果
发表于 2011-11-25 13:13:11 | 显示全部楼层
你出现的问题是不是2个结果都出?
 楼主| 发表于 2011-11-25 13:14:15 | 显示全部楼层
回复 10# jellyhk

对,因为if命令出错,所以才会出现两个结果啊。。。
发表于 2011-11-25 13:17:03 | 显示全部楼层
哈哈!搞半天是这个问题!郁闷了!
是你写的不对!
echo 对不起               
pause
:A
ECHO 恭喜
pause
--------

---echo 对不起               
pause&&exit
:A
ECHO 恭喜
pause&&exit
 楼主| 发表于 2011-11-25 13:33:33 | 显示全部楼层
回复 12# jellyhk


    还是有问题,就是我要的结果是“恭喜”
出现“对不起”是if语句还有问题
发表于 2011-11-25 13:46:42 | 显示全部楼层
回复  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张图
发表于 2011-11-25 14:08:12 | 显示全部楼层
if  %%B%% == Hitachi HDS721050CLA362 goto A

改为

if  %B% == Hitachi HDS721050CLA362 goto A
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 10:50 , Processed in 0.022677 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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