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

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

[复制链接]
发表于 2010-7-19 19:39:19 | 显示全部楼层
A1:
  1. @echo off
  2. set /p s=请随便输入一个字符串
  3. set s_=%s:s=%
  4. if “%s%”==“%s_%” (echo 里面没有s哦) else echo 里面有s哦
  5. pause
复制代码

A2
  1. @echo off
  2. set /p a=请随便输入一个字符串
  3. set /p b=请再随便输入一个字符串
  4. if "%a:a=%"=="" if "%b:b=%"=="' (echo 符合要求) else echo 不符合要求
  5. pause
复制代码

=========
end;

[ 本帖最后由 poxi 于 2010-7-19 19:40 编辑 ]
发表于 2010-8-8 00:26:22 | 显示全部楼层
原帖由 batman 于 2009-10-29 21:29 发表
也是比较另类的,不用if:
set /a num=3/(a-1) >nul 2>nul||set /a num=3/(b-2) >nul 2>nul||echo a等于1,b等于2

给batman管理员前辈挑点小问题,前辈您从数学的角度考虑该题感觉有点跑题(当然思路是相当发人深省的绝妙的并且值得赞叹的),晚辈举一反例加以论证,如果a=1.0可兼或b=1.0等情况,亦即两者在数值上等于1,那么您这代码也会回显"a等于1,b等于2"这句话,如果楼主前辈的意思就是判断数值上的等于,那么您的答案就恰到好处了,但是这样一来,楼主前辈的答案就错了(因为楼主前辈的答案判断的是右值相等而非数值相等),总之,您两位前辈总有一位是不符合题意的,归根结底是楼主的题目表述不清含有二义性所致,当然了,晚辈没有什么人身攻击的意思,相反晚辈还相当敬仰两位前辈的超凡的智慧与过人的才能呢,所以,如有语言过激之处,还请两位前辈定当多多包涵才是。。。

[ 本帖最后由 fish 于 2010-8-8 00:32 编辑 ]
 楼主| 发表于 2010-8-23 14:11:33 | 显示全部楼层

回复 32楼 的帖子

你真有耐心啊,说1是1说2是2.
如果是1.0 的话 set 也会出错吧?  批处理不支持小数啊。
发表于 2010-8-24 23:15:50 | 显示全部楼层

回复 34楼 的帖子

所以说嘛,无论batman管理员前辈的那个批处理中a是1点几,结果a变量存储的还是1啊,所以似乎是不太符合前辈您的题目要求啊,当然,我说过了,如果楼主前辈的意思就是判断数值上(取整之后)的等于,那batman管理员前辈就对了,但是楼主前辈又不对了。
发表于 2011-7-14 14:16:33 | 显示全部楼层
1.
  1. @echo off
  2. Set /p "a=请输入:"
  3. If  %a:s=%==%a% (Echo %a%不含有s) Else (Echo %a%含s)
  4. pause
复制代码
2.
  1. @echo off
  2. Set /p "a=请输入:"
  3. Set /p "b=请输入:"
  4. If "%a%%b%"=="12" (Echo Yes) Else (Echo No)
  5. ::连下划线都可以省略的
  6. pause
复制代码
发表于 2011-7-14 14:24:06 | 显示全部楼层
12# inittab
==和equ有却别吗?——我测试是一丁点区别也没有,当然写起来有区别就是了。
 楼主| 发表于 2011-7-14 15:46:15 | 显示全部楼层
36# Hello123World


下划线不应该省略因为 a=12 ,b=空的情况 或者 a=空 b=12
发表于 2011-7-14 18:27:52 | 显示全部楼层
第二题来个新思路
  1. echo off
  2. set /p a=
  3. set /p b=
  4. set/a b/=a*=-1
  5. if "%a%%b%"=="-1-2" (echo yes) else (echo no)
  6. pause
复制代码
发表于 2011-8-7 21:25:06 | 显示全部楼层
这样可不可以。

  1. if "%var%"=="%var:s=%" (echo this string contains  "s") else (echo the string doesn't contain "s")
复制代码

  1. if not %a% equ 1 (goto :eof) else if not %b% equ 1 (goto :eof) else (echo a=1,b=1)
复制代码
发表于 2011-11-10 12:06:22 | 显示全部楼层
回复 8# 523066680


    搜到关于“下划线”的回复看到这个帖子的,长见识了,思路确实很重要!第一题的思路超简洁啊!第二题的甄别符加得真好!学习了
发表于 2012-5-3 23:33:55 | 显示全部楼层
本帖最后由 xhhivi 于 2012-5-4 22:00 编辑

40楼的"%var:s=%"是什么意思啊?没看懂
网上找了一圈估计是这个意思:%VAR:str1=str2%   会将VAR中的str1替换为str2(str2如果为空则可以达到删除的效果
做个记号
发表于 2012-5-4 09:11:18 | 显示全部楼层
啊啊啊啊啊啊啊,我来晚了啊
发表于 2012-5-4 15:20:15 | 显示全部楼层
这种题不应该叫IF命令的练习题,因为练习的核心还是思路和SET命令!~
发表于 2012-5-21 12:13:30 | 显示全部楼层
@ECHO OFF
IF ERRORLEVEL 1 GOTO 1
IF ERRORLEVEL A GOTO A
:A
ECHO 命令
GOTO EXIT
………同上
PAUSE
发表于 2024-1-25 17:35:14 | 显示全部楼层
@echo off
setlocal enabledelayedexpansion
set /p str=请输入需要判断字符串:
:loop
set /a n+=1
set var=!str:~%n%,1!
echo %var%
if "!var!"=="s" (echo 存在字符s & goto :eof) else (
        if "!var!"=="" (@goto a) else (goto loop)
)
:a
echo 不存在字符s
pause>nul&exit
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 21:20 , Processed in 0.020767 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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