[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

下面的题目不难,方法有多种~ 看能不能一次性写出较精简的哦~


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

写出判断的句子即可。

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

评分人数

我觉得这两道题目虽然做起来不难,但是很容易绕弯路~

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

补个积分吧,中层下的会员,一次性做最简的代码或超乎意料地,给10分

TOP

s分大小写没有
不分可以用变量替换的方法做
第二题...难度较低

TOP

细节不顾虑,就看你的方式。.

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

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

TOP

怎么没有例子呀!呵呵一会再来看

TOP

怎么没有例子呀!呵呵一会再来看
1

评分人数

TOP

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

评分人数

    • jellyhk: 不理解1。1为什么不去掉第3段代码!技术 + 1
(*^_^*)

TOP

首先,非常感谢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 编辑 ]
6

评分人数

TOP

看了楼上的两位大侠。。我终于明白了第一题原来是那么简单。。当初我所设想的是这样子 .  输入几个字符。 测试字符长度。 再应用FOR循环提取每一个字符 再用if  判断是否相等。。本来以为很简单的。。哎。没想到我最后还是没做出来。。不知楼主可否按我的思路写个批处理给参考一下。。 感谢~

TOP

确实是简单的,只是思想转个弯就会更简单,所以我从不忽视简单的东西。

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

        频繁的操作我就不做了,之前其他版块讨论过判断字符串长度的代码
可以搜搜。

TOP

回复 8楼 的帖子

IF_EXIST兄的1.2代码,很简单,我就没有多想,直接两个IF连用。
赞一个,加个分。
(*^_^*)

TOP

凑个热闹,
  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 编辑 ]
2

评分人数

    • wxcute: 三种方法很难得。第三种方法思路也挺好。PB + 6
    • 523066680: 很好PB + 8

TOP

非常感谢楼上的回帖。

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

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


而判断是否s 的 也很怕 特殊字符的出现 比如后两种办法 字符串中有奇数个双引号时
可能出错。

TOP

回复 13楼 的帖子

不客气。
也谢谢你和论坛各位版主,让大家在论坛学到很多。

TOP

写到一半写不下去!
     看来还得加油!
        看几位写的顿时让我茅舍顿开!
                               谢......
我们觉得崖畔的鲜花很美,那是因为它们敢于踏出迈向天空的一步!

TOP

返回列表