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

批处理IF命令的两个小练习

[复制链接]
发表于 2009-7-27 22:01:36 | 显示全部楼层 |阅读模式
下面的题目不难,方法有多种~ 看能不能一次性写出较精简的哦~


习题1.1   判断一个字符串里面是否含有 s 这个字符
       1.2   同时判断两个数字变量a 和 b  是否 a=1 且 b=2

写出判断的句子即可。

[ 本帖最后由 523066680 于 2009-7-27 22:03 编辑 ]

评分

参与人数 1PB +5 收起 理由
wxcute + 5 题目不错。

查看全部评分

 楼主| 发表于 2009-7-28 20:42:35 | 显示全部楼层
我觉得这两道题目虽然做起来不难,但是很容易绕弯路~

没想到挂两天了没人做……

补个积分吧,中层下的会员,一次性做最简的代码或超乎意料地,给10分
发表于 2009-7-28 22:20:38 | 显示全部楼层
s分大小写没有
不分可以用变量替换的方法做
第二题...难度较低
 楼主| 发表于 2009-7-29 16:57:41 | 显示全部楼层
细节不顾虑,就看你的方式。.

不管多简单,写下来吧. 除非你觉得鄙视简单的东西.

[ 本帖最后由 523066680 于 2009-7-29 17:00 编辑 ]
发表于 2009-7-29 17:14:49 | 显示全部楼层
怎么没有例子呀!呵呵一会再来看
发表于 2009-7-29 17:15:14 | 显示全部楼层
怎么没有例子呀!呵呵一会再来看

评分

参与人数 1PB -4 收起 理由
yslyxqysl -4 重复发帖

查看全部评分

发表于 2009-7-29 19:38:56 | 显示全部楼层
1.1
  1. @echo off
  2. set /p str=请输入字符串:
  3. set "str=%str:"=%"
  4. if "%str:s= s %" equ "%str%" (echo 不存在s) else (echo 存在s)
  5. pause
复制代码
1.2
  1. @echo off
  2. set /p a=请输入a的值:
  3. set /p b=请输入b的值:
  4. set a=%a:"=%&set b=%b:"=%
  5. if "%a%" equ "1" (if "%b%" equ "2" (echo yes) else (echo no)) else echo no
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
jellyhk + 1 不理解1。1为什么不去掉第3段代码!

查看全部评分

 楼主| 发表于 2009-7-29 21:16:46 | 显示全部楼层
首先,非常感谢keen的参与

其次,大部分人都懒得理这题目嘛。我是觉得题目的解仔细想会更简洁,
所以才拿出来,没想到这么少人愿意做。也罢,我直接贴个人结果了

没有判断大小写,也没有算入特殊情况。
  1. @echo off &title 包含s?
  2. set /p inp="输入字符串:"
  3. if "%inp:s=%"=="%inp%" (echo,不含有s) else (echo,含有s)
  4. pause
复制代码
  1. @echo off &title (a=1)且(b=2)?
  2. set /p a=请输入a的值:
  3. set /p b=请输入b的值:
  4. if "%a%_%b%"=="1_2" (echo yes) else (echo no)
  5. pause
复制代码

[ 本帖最后由 523066680 于 2009-7-29 21:22 编辑 ]

评分

参与人数 6PB +8 技术 +4 收起 理由
jellyhk + 1 思路看的懂!
birdsdeng + 1 很精彩。
1130342432 + 1 good
Hello123World + 1 第二题确实精彩
wxcute + 3 二号题解法思路精彩。

查看全部评分

发表于 2009-7-30 07:14:06 | 显示全部楼层
看了楼上的两位大侠。。我终于明白了第一题原来是那么简单。。当初我所设想的是这样子 .  输入几个字符。 测试字符长度。 再应用FOR循环提取每一个字符 再用if  判断是否相等。。本来以为很简单的。。哎。没想到我最后还是没做出来。。不知楼主可否按我的思路写个批处理给参考一下。。 感谢~
 楼主| 发表于 2009-7-30 07:44:29 | 显示全部楼层
确实是简单的,只是思想转个弯就会更简单,所以我从不忽视简单的东西。

9楼的,逐个提取总是最频繁的操作。如果走弯的思路,我觉得还可以用
for 以 s 为分隔符~  然后累加数字判断。 还可以判断出s字符的个数

        频繁的操作我就不做了,之前其他版块讨论过判断字符串长度的代码
可以搜搜。
发表于 2009-7-30 10:30:59 | 显示全部楼层

回复 8楼 的帖子

IF_EXIST兄的1.2代码,很简单,我就没有多想,直接两个IF连用。
赞一个,加个分。
发表于 2009-7-31 15:55:00 | 显示全部楼层
凑个热闹,
  1. @echo off
  2. set /p aa=请输入字串:
  3. echo =======================
  4. ::第一种
  5. echo %aa% | find "s">nul && echo 存在s || echo 不存在s
  6. ::第二种
  7. if "%aa:s=%"=="%aa%" (echo 不存在s) else echo 存在s
  8. ::第三种
  9. for /f "tokens=1,2 delims=s" %%a in ("a%aa%a") do if "%%b"=="" (echo 不存在s) else echo 存在s
  10. set /p a=输入变量a:
  11. set /p b=输放变量b:
  12. echo ==========================
  13. echo 问题:验证是否a=1且b=2
  14. if %a% equ 1 (if %b% equ 2 (echo 成立) else echo 不成立) else echo 不成立

  15. pause
复制代码
if "%a%_%b%"=="1_2" (echo yes) else (echo no)
是个好思路,但如果输入a或b时前后不小心带入空格。就不行了,个人觉得用equ 来作数字判断会比较好,可能有点鸡蛋挑骨头。呵呵

[ 本帖最后由 inittab 于 2009-7-31 16:07 编辑 ]

评分

参与人数 2PB +14 收起 理由
wxcute + 6 三种方法很难得。第三种方法思路也挺好。
523066680 + 8 很好

查看全部评分

 楼主| 发表于 2009-7-31 17:31:19 | 显示全部楼层
非常感谢楼上的回帖。

(有认真想题的都是有一定等级的同学~ ,可见不回答的新手的态度……)

关于楼上说的也对。我想带空格的话 也可以 %a: =%,但也不必了。
因为对于其他情况,很多很多~  所以特使情况特殊对待了。


而判断是否s 的 也很怕 特殊字符的出现 比如后两种办法 字符串中有奇数个双引号时
可能出错。
发表于 2009-7-31 18:48:14 | 显示全部楼层

回复 13楼 的帖子

不客气。
也谢谢你和论坛各位版主,让大家在论坛学到很多。
发表于 2009-9-30 07:52:02 | 显示全部楼层
写到一半写不下去!
     看来还得加油!
        看几位写的顿时让我茅舍顿开!
                               谢......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 21:23 , Processed in 0.020661 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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