关于批处理 for求教

如何在Excel2007中选出符合要求的数据并进行批处理
作者:佚名
字体:[ ] 来源:互联网 时间:12-05 13:52:20
Excel办公技巧中,我们经常需要选出某些符合规格的数据,然后进行批处理操作,有没有什么简单的方法呢?答案是肯定的,下面,小编就来教各位如何应对这种情况
Excel办公技巧中,我们经常需要选出某些符合规格的数据,然后进行批处理操作,有没有什么简单的方法呢?答案是肯定的,下面,小编就来教各位如何应对这种情况。
①我们打开Excel2007,选择数据表格区域,单击菜单栏--数据--筛选按钮。
②此时标题行会出现小三角符号,单击数据旁边的小三角,弹出下拉菜单,选择数字筛选--大于。
③在大于中填入50,确定。
④筛选完毕,然后在G1单元格输入30,复制下来。
⑤选择D2:D4区域,按下F5键,弹出定位对话框,点击定位条件按钮。
⑥在定位条件对话框中,勾选可见单元格,确定。
⑦然后单击菜单栏--开始--选择性粘贴,勾选加,确定。
⑧这样先前复制的内容就被加上去了,完成批处理操作。
大家感兴趣的内容
12345678910
最近更新的内容新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分57阅读权限10帖子精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
白手起家, 积分 57, 距离下一级还需 143 积分
帖子主题精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
论坛徽章:0
我现在有几十个脚本要运行,每个10—20分钟吧,每个脚本的参数可能会不同。
我不想花一天时间守在这里,一个一个的运行。
有什么办法能让这些脚本依次运行(并按照自己的参数),而不是靠人一个一个的执行呢?
是不是得写个脚本,用什么写好呢?
大家遇到这种问题怎么解决呢?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID2261817空间积分0 积分56阅读权限10帖子精华可用积分56 信誉积分170 专家积分0 在线时间30 小时注册时间最后登录
白手起家, 积分 56, 距离下一级还需 144 积分
帖子主题精华可用积分56 信誉积分170 专家积分0 在线时间30 小时注册时间最后登录
论坛徽章:0
& & 每一个脚本执行完后,留下一个标记,由一个调度脚本去描这个标记,如果有标记则说明脚本执行完成,去调度第二个脚本。第二个脚本在执行前,清除第一个的标记,在执行完后,留下自己的标记,再由调试脚本去描。我乱想的,呵呵。
UID空间积分0 积分57阅读权限10帖子精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
白手起家, 积分 57, 距离下一级还需 143 积分
帖子主题精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
论坛徽章:0
jackiebj&&这个应该怎么写呢
UID空间积分0 积分172阅读权限10帖子精华可用积分172 信誉积分249 专家积分0 在线时间57 小时注册时间最后登录
白手起家, 积分 172, 距离下一级还需 28 积分
帖子主题精华可用积分172 信誉积分249 专家积分0 在线时间57 小时注册时间最后登录
论坛徽章:0
bash cookbook里面第二章还是第三章说了这个,好像就是个for循环,你可以找一下
UID空间积分0 积分3856阅读权限100帖子精华可用积分3856 信誉积分3123 专家积分30 在线时间4081 小时注册时间最后登录
帖子主题精华可用积分3856 信誉积分3123 专家积分30 在线时间4081 小时注册时间最后登录
认证徽章论坛徽章:16
写个bash脚本,就是一个一个挨着执行的
UID空间积分0 积分57阅读权限10帖子精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
白手起家, 积分 57, 距离下一级还需 143 积分
帖子主题精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
论坛徽章:0
我就是打算写个bash脚本的&&可是 可是。。。不会写啊
UID空间积分0 积分57阅读权限10帖子精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
白手起家, 积分 57, 距离下一级还需 143 积分
帖子主题精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
论坛徽章:0
amarant&&能帮我写一个么?
拉不紧的窗帘
UID空间积分0 积分39163阅读权限100帖子精华可用积分39163 信誉积分1486 专家积分0 在线时间17696 小时注册时间最后登录
帖子主题精华可用积分39163 信誉积分1486 专家积分0 在线时间17696 小时注册时间最后登录
论坛徽章:4
crontab -e
Crosstool 交叉编译工具链:
UID空间积分0 积分57阅读权限10帖子精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
白手起家, 积分 57, 距离下一级还需 143 积分
帖子主题精华可用积分57 信誉积分358 专家积分0 在线时间117 小时注册时间最后登录
论坛徽章:0
谢谢 dooros
不过我不是想设定什么时间来执行这些脚本
而是 几个脚本依次执行 ,有些脚本的输出还是另外一些脚本的输入&&
UID空间积分0 积分172阅读权限10帖子精华可用积分172 信誉积分249 专家积分0 在线时间57 小时注册时间最后登录
白手起家, 积分 172, 距离下一级还需 28 积分
帖子主题精华可用积分172 信誉积分249 专家积分0 在线时间57 小时注册时间最后登录
论坛徽章:0
看看下面那个中不中啊
for SCRIPT in /path/to/scripts/dir/*
& & if [ -f $SCRIPT -a -x $SCRIPT ]
& && &&&$SCRIPT
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处批处理问题求教, 批处理问题求教 下面的批处理代
批处理问题求教 下面的批处理代码,想实现的功能是运行后检查自身文件名是否为aaa,若是则删除自身,若不是则把自身重命名为aaa 可是出现错误,实现不了效果,请高手指点echo onIF %~n0%==aaa (del %0) ELSE (re埂发囤菏塬孤剁酞筏喀n %0 aaa.bat) vbverybeautifu 批处理问题求教
echo offif &%~n0%&==&aaa& ( del %0 ) ELSE ( ren %0 aaa.bat )pause &Nul
IF %~n0%==aaa ( 这里多了一个%号命令行参数不能左右都包起来echo on IF %~n0==aaa ( del %0 ) EL埂发囤菏塬孤剁酞筏喀SE ( ren %0 aaa.bat )博客访问: 750380
博文数量: 169
博客积分: 1776
博客等级: 上尉
技术积分: 1693
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
批处理获取当前时间%date:~4,4%&&&& 取年%date:~9,2%&&&& 取月%date:~12,2%&& 取日%time:~0,2%&&&& 小时%time:~3,2%&&&& 分钟%time:~6,2%&&&& 秒如:rem&& 取系统日期及时间,同时将时间转换为8位(8:16:00-->08:16:00).set&& CurDate=%date:~0,10%set&& CurTime=%time%set&& hh=%CurTime:~0,2%if&& /i&& %hh%&& LSS&& 10&& ( set&& hh=0%CurTime:~1,1% )set&& mm=%CurTime:~3,2%set&& ss=%CurTime:~6,2%set&& CurDateTime=%CurDate%_%hh%:%mm%:%ss%set&& CurDateTime语法:%变量:~指定偏移量,指定截取字符长度%&&&& 如果两者的数值(偏移量或长度)是负数,使用的数字将会是环境变数的长度加上位移或指定长度。我会修正上面帖子中的描述。这里举个例子来说明:set /p ok=Input value of "ok" environment-variable:_C:\Documents and Settings\gnaw0725>set /p ok=Input value of "ok" environment-variable:_Input value of "ok" environment-variable:_C:\Documents and Settings\gnaw0725>echo %ok%C:\Documents and Settings\gnaw0725>echo %ok:~4,4%5678C:\Documents and Settings\gnaw0725>echo %ok:~-4,4%7890C:\Documents and Settings\gnaw0725>echo %ok:~4,-4%56C:\Documents and Settings\gnaw0725>echo %ok:~-4,-4%ECHO is on.C:\Documents and Settings\gnaw0725>echo %ok:~,-4%123456C:\Documents and Settings\gnaw0725>echo %ok:~-4%7890C:\Documents and Settings\gnaw0725>echo %ok:~4,%ECHO is on.SET扩展命令集有些特殊用法,例如:%CD% - 展开为含目前目录的字串。(注:这个扩展功能较之For中的%~$PATH:I的用法要弱的多了)%RANDOM% - 展开为一个在 0 和 32767 之间的整数乱数值。%ERRORLEVEL% - 展开为目前的 ERRORLEVEL 值%CMDEXTVERSION% - 展开为目前的扩充指令处理器的版本号码。%CMDCMDLINE% - 展开为执行指令处理器前的原始指令行。这些用法有待以后脚本运用中的实践。SET扩展命令集的帮助信息如下:Microsoft Windows XP [Version 5.1.2600](C) Copyright
Microsoft Corp.C:\Documents and Settings\gnaw0725>set /?显示、设定或移除 cmd.exe 环境变数。SET [variable=[string]]variable 指定环境变数名称。string&&&& 指定设定给变数的一系列字元。仅键入 SET 而不加上任何参数,可以显示目前的环境变数。如果您啟用了扩充命令,SET 指令有以下的改变:如果执行 SET 命令而且只包含变数名称,没有等号或数值的话,指令会显示出所有字首符合 SET 命令中指定变数名称的所有变数值。例如:&&&& SET P会列出所有以 'P' 为开头的环境变数。如果在目前的环境中找不到变数名称,SET 指令会将 ERRORLEVEL设为 1。SET 指令不将等号 (=) 视为变数名称的一部份。有两个新参数已经加到 SET 指令中:&&&& SET /A e?xpression&&&& SET /P variable=[promptString]/A 指定在等号右方的字串是一个要被运算的数字运算式。您可以用运算式进行简单的运算,而且支援下列的运算子 (依照运算优先顺序由高到低排列):&&&& ()&&&&&&&&&&&&&&&&&& - 组成一群&&&& * / %&&&&&&&&&&&&&& - 数字运算元&&&& + -&&&&&&&&&&&&&&&& - 数字运算元&&&& <>&&&&&&&&&&&&&& - 逻辑位移&&&& &&&&&&&&&&&&&&&&&&&&& - 位元运算 and&&&& ^&&&&&&&&&&&&&&&&&& - 位元运算 exclusive or&&&& |&&&&&&&&&&&&&&&&&& - 位元运算 or&&&& = *= /= %= += -=&& - 指定&&&& &= ^= |= <>=&&&& ,&&&&&&&&&&&&&&&&&& - 运算式分隔字元如果您使用了任何逻辑或餘数运算子,您必须将运算式两边括上引号。任何在运算式中非数字的字串会被当作环境变数,并且在使用前会先将这些环境变数转换为数 字。如果您所指定的环境变数名称尚未在目前环境中定义,那麼它的值会被设为 0。这可以让您用环境变数值来做运算,而不必打入所有的 % 符号来取得它的值。如果 SET /A 是用指令档之外的指令行执行,它会显示运算式最后的数值。指定运算子需要有个环境变数在等号的左方。0x 字首在数字前方代表十六进位数字、0b 字首代表二进位数字或 0 字首代表八进位数字,否则数字值都是指十进位数字。所以 0x12 就和 18、022 等相同。请注意八进位数字可能容易弄错: 像 08 和 09 就不是正确的数字,因为 8 和 9 并不是八进位的正确数字。/P 参数让您设定指令行的使用者输入变数值。在读取输入指令行之前,显示指定的 promptString。promptString 可以是空白。环境变数取代功能已经有下列增强:&&&& %PATH:str1=str2%会将 PATH 环境变数展开,取代每个发现的 "str1" 与 "str2"的扩充结果。"str2" 可以是空白字串,这会从扩充输出中删除全部 "str1"。"str1" 可以用星号开始,这将会从扩充输出的开头开始,对应到从所有第一个发现含有str1 的项目。您也可以为扩充功能指定子字串。&&&& %PATH:~10,5%这将会扩充 PATH 环境变数,然后只使用扩充结果的第 11 个(位移 10)字元后的 5 个字元如果长度未指定,将会预设为上次使用的变数值。如果数字(位或长度)是负数,使用的数字将会是环境变数的长度加上位移或指定长度。&&&& %PATH:~-10%将抽出 PATH 变数的最后 10 个字元。&&&& %PATH:~0,-2%将抽出 PATH 变数的最后 2 个字元。最后,系统加入了延迟环境变数展开的支援。在预设状态下,指令展开会啟用这项支援,但是您可以在 CMD.EXE 用 /V 指令行参数来啟用/停用这个功能。 请参看 CMD /?延迟环境变数展开功能可用来避开展开功能限制。这项限制是发生在指令行读取过程,不是发生在执行过程。下面的范例说明了立即展开变数时会发生的问题:&&&& set VAR=before&&&& if "%VAR%" == "before" (&&&&&&&& set VAR=&&&&&&&& if "%VAR%" == "after" @echo If you see this, it worked&&&& )这个例子永远无法显示 echo 讯息,因为在两个 IF 叙述中的 %VAR% 会在第一个 IF 叙述被读入时便被展开。这是因为它是逻辑上包含了 IF 的内部,而内部又是一个复合叙述。 所以在复合叙述内的 IF 实际上是用"before" 和 "after" 来比较,而这永远不会为真。同样的,下面的例子也不会作用:&&&& set LIST=&&&& for %i in (*) do set LIST=%LIST% %i&&&& echo %LIST%这个例子中并不会建立目前目录中所有档案的清单,相反的只会将 LIST 变数设为最后一个找到的档案。同样地,这是因为 %LIST% 只有在 FOR 叙述第一次被读入时才展开,此时 LIST 变数是空的。所以我们实际执行的 FOR迴圈是:&&&& for %i in (*) do set LIST= %i这只是重复的将 LIST 设为最后找到的档案。延迟环境变数展开让您可以用一个不同的字元 (惊嘆号) 在执行时展开环境变数。如果啟用了延迟环境变数展开,上面的例子可以被改写如下而正常作用:&&&& set VAR=before&&&& if "%VAR%" == "before" (&&&&&&&& set VAR=after&&&&&&&& if "!VAR!" == "after" @echo If you see this, it worked&&&& )&&&& set LIST=&&&& for %i in (*) do set LIST=!LIST! %i&&&& echo %LIST%如果您啟用了扩充指令,有几个动态环境变数会被展开但是不会出现在 SET所显示的环境变数列表中。这些变数的值会每次在这些变数被展开时动态地重新计算如果使用者用这些变数的名称来定义变数时,则这个新定义会覆盖以下所列的动态变数:%CD% - 展开为含目前目录的字串。%DATE% - 展开为与 DATE 命令格式相同的目前日期字串。%TIME% - 展开为与 TIME 命令格式相同的目前时间字串。%RANDOM% - 展开为一个在 0 和 32767 之间的整数乱数值。%ERRORLEVEL% - 展开为目前的 ERRORLEVEL 值%CMDEXTVERSION% - 展开为目前的扩充指令处理器的版本号码。%CMDCMDLINE% - 展开为执行指令处理器前的原始指令行。rem CODE BY t0nsha&rem 关于提取date,time输出结果的一个批处理&rem “:”(冒号)和“~”波浪号必不可少!&rem “~”后的数字:为正数表示舍弃输出结果的前几位;直接跟负数表示取到输出结果的后第几位。&rem “,”后的数字:为正数表示取到输出结果的前第几位;为负数表示舍弃输出结果的后几位。&echo %date%&echo %date:~4%&::下行表示舍弃前0位,取到第10位(即取输出结果的前10位)&echo %date:~0,10%&echo %date:~4,-5%&pause&echo %time%&echo %time:~-3%&echo %time:~2,-3%&pause&echo %date:~4% %time:~0,-3%&pauseBTW使用批处理产生日期(时间)文件、文件夹 帮别人整Sql&&&& server自动备份发现无法使用网络映射驱动器作为备份文件存放路径而本机磁盘空间实在是不够于是决定在本机只备份最新2天数据再写个批处理,做成系统调度每周将备份数据复制到网络驱动器上存档从网上搜到批处理产生日期文件的办法下面是实现的比较好的批处理文件:@echo offset aFile=bak-%DATE:~4,4%%DATE:~9,2%%DATE:~12,2%set bFile=bak-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%set cFile=bak-%DATE%echo Afile=%aFile%echo Bfile=%bFile%echo Cfile=%cFile%输出:Afile=bak-Bfile=bak-113202Cfile=bak-星期二 于是备份bat就好写了@echo offecho 正在备份数据到网络驱动器。。。set folder=%DATE%md "y:\%folder%"copy d:\DataBak\*.BAK "y:\%folder%"echo 备份完毕。------------------------------------------------------------------------------------------------------@echo offset AFile=bak-%DATE:~4,4%%DATE:~9,2%%DATE:~12,2%set BFile=bak-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%echo AFile=%AFile%.rarecho BFile=%BFile%.rar运行此批处理的结果:AFile=bak-.rar ------- 年月日 -- 8位BFile=bak-140650.rar ---------- 时分秒 -- 6位另:如果小时数只有一位数字,造成中间有空格而出错的问题,请使用如下方法补0set hh=%time:~0,2%if /i %hh% LSS 10 (set hh=0%time:~1,1%&&我们在批处理中经常要遇到数字(值)的处理,下面我就简单讲一下批处理中数字(值)处理方法:一、随机数  在系统变量中有一个随机取值的变量%random%,其为0-32767之间的十进制数字,利用这个变量我们就能取得我们想要的任一组随机数字(等下会说明方法)。二、四则运算  如我们要对一个变量(数值)进行运算,则可使用set /a命令,如:set /a str+=1就是把变量str的数值加上1,同样只要把这个命令中的+改成-、*、/就可以完成对该数值的减1、乘1、除1运算了,而更重要的是我们可以通过set /a命令来进行四则运算,如:set /a str=5*6+4*3-2*7,也可以进行变量和变量间的四则运算,如:set /a str=%a%/%b%*%c%-%d%,但要注意一点:运算仅限于整数,如要对小数进行运算可先乘上10的n次方。三、取余  所谓余数就是除数除以被除数剩下的值,在批处理中取余运算符是用%%来表示的,如:%random%%%56就是把不断地把随机数除以56取余数,得到的数值一定是处在0-55间的,那么我们只要set /a a=%random%%%56就能把变量a的值设定在0-55间(大家想一下为什么a不会等于56),如要把a设定在1-56间,则只需set /a a=%random%%%56+1,我们了解了这点是很重要的,如要随机设定一台机器的ip(假设4个数值都随机取定)则只需写下以下代码(设置部分略去):CODE:&&@echo offset /a a=%random%%%256,b=%random%%%256,c=%random%%%256,d=%random%%%256set ip=%a%.%b%.%c%.%d%netsh interface...四、去零  数值去零一般是运用在时间计算上,因时间显示一般都是两位不足两位的自动在个位前补零,如07:04:01,这就给我们在运算中带来麻烦,所以对时间进行运算应该先去零,方法其实也很简单,就是利用取余运算,如要对08去零则只在08前面加上10变成108再不断地除以10余数肯定是8,如时间变量a(值为08)的运算公式为:set /a a=10%a%%%10,但时间是有两位数的,因此要将上面的公式变为set /a a=100%a%%%100,现在我们对上面的07:04:01进行取零,代码如下:CODE:&&@echo offset str=07:04:01for /f "delims=: tokens=1-3" %%a in ("%str%") do (& & set /a a=100%%a%%100,b=100%%b%%100,c=100%%c%%100)echo %a%:%b%:%c%&pause>nul最后显示的结果就是7:4:1。五、递加(减、乘、除)运算  在批处理中我们经常要用到递加(减、乘、除)的运算,那怎么实现呢?只有通过循环来实现,有两种循环的方法:一种是for循环,一种是goto循环。如我们要对一个数值5进行递加100次变成105,两种方法的代码如下:& & 1.for循环CODE:&&@echo offset n=5for /l %%i in (1,1,100) do set /a n+=1echo %n%&pause>nul  2.goto循环CODE:&&@echo offset n=5:beginset /a n+=1if %n% neq 105 goto beginecho %n%&pause>nul同理可实现递减、乘、除和重复四则运算。  我也就简单讲这么多了,主要是想给初学批处理的新手以自己微薄的帮助,还望各位高人予以补充和指教。批处理 if条件语句 数值或者字符串的比较《批处理入门手册》三.高级语句篇----------------------------------------------------------------------------------------------------------------------3.1 学习if条件语句学习要点:5种if语句的基本语法:1。判断两个字符串是否相等,if "字符串1"=="字符串2" command 语句;2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句;3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句;4。判断变量是否已经定义,if defined 变量 command 语句;5。判断上个命令的返回值,if errorlevel 数值 command 语句。补充1:if not 语句。----------------------------------------------------------------------------------------------------------------------1。判断两个字符串是否相等,if"字符串1"=="字符串2" command 语句注意:在"字符串1"=="字符串2"中,是两个连续的"="例1,@echo offset /p var1=请输入第一个比较的字符:set /p var2=请输入第二个比软的字符:if "%var1%"=="%var2%" (echo 输入的两个字符相同) else echo 输入的两个字符不相同pause执行后会要求你输入两个字符串,然后批处理判断它俩是否相同。在判断字符串是否相等的时候,if是会区分大小写的,请看,例2,@echo offif "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同pause执行后会显示:输入的两个字符不相同如果我们不想让它区分大小写,则可以加上/i 参数。再看下面这个例子,例3,@echo offif /i "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同pause这次执行后会显示:输入的两个字符相同2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句语句中的equ 表示相等的意思,判断两个数值之间的大小关系还有以下关系符号:中文含义&&&&&& 关系符&&&&&& 英文解释等于&&&&&&&&&&& equ&&&&&&&&& equal大于&&&&&&&&&&& gtr&&&&&&&&& greater than大于或等于&&&&& geq&&&&&&&&& greater than or equal小于&&&&&&&&&&& lss&&&&&&&&&& less than小于或等于&&&&& leq&&&&&&&&& less than or equal不等于&&&&&&&&& neq&&&&&&&&& no equal我们还是来看个例子,例4,@echo off&set /p var=请输入一个数字:&if %var% geq 10 (echo 此数大于或等于10) else echo 此数小于10pause注意哦,批处理中的大于号,小于号,等于号等等都不能用:“>”& “<”& “=” 这些符号,而要用像"gtr"这类的。&☆注意:if 比较字符串与比较数字 之间的区别它们的区别体现在引号""上面,请看下面的例子【example 1】@echo offif "12" lss "4" (echo 12竟然小于4哦?) else echo 12当然不会小于4的!pause执行的结果是:12竟然小于4哦?【example 2】@echo offif 12 lss 4 (echo 12竟然小于4哦?) else echo 12当然不会小于4的!Pause执行的结果是:12当然不会小于4的!为什么【example 1】中加了双引号""会出错呢?原因如下:如果要比较的两个元素加了双引号"",那么会被当成是字符的比较。两个元素作比较的流程是:先比较两个元素的首位,如果首位相同,再比较第二位,如果第二位相同,再比较第三位。。。依此,在【example 1】if "12" lss "4" 语句中,实质是1与4的比较,1当然小于4,所以执行了后面的命令:echo 12竟然小于4哦?☆建议:如果是字符串的比较就使用双引号"" 是数字的比较就不用双引号了!3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句我们来瞧瞧这个判断驱动器,文件或者文件夹是否存在的语句,这里if exist filename 是表示:存在 filename的意思。例5,@echo off&if exist "e:" (echo e盘存在) else echo e盘不存在&pause>nul这里是判断e: 是否存在!例6,@echo offif exist d:\123.bat (echo 123.bat文件存在!) else echo 123.bat文件不存在!&pause这个例子是用来判断123.bat文件是否存在的,但并不严谨!如果123.bat是一个文件夹而不是一个文件时,上面的判断就不行了!那么如何判断指定的文件123.txt是否存在?请看:@echo offdir /a-d d:\123.bat >nul 2>nulif %errorlevel%==0 (echo 123.bat文件存在!) else echo 123.bat文件不存在!&Pause先用dir的/a-d参数去除123.bat的目录属性,指定说明要搜索的123.bat是文件而不是文件夹,并把结果(包括正确和错误)屏蔽(>nul 2>nul),如果dir找到了文件123.bat,那么其errorlevel值(dir命令的退出编码)会被设为0,否则为1则是没有此文件。当然也可以用||和&&来判断。关于为什么要用if %errorlevel%==0 而不用if errorlevel 0呢?在后面if errorlevel中会有说明!例7,@echo offif exist test\ (echo test 是文件夹) else echo test 是文件pause这里是判断文件夹是否存在。对于文件夹存在的判断,我们不可以用以下两种写法:第①种@echo offif exist test\. (echo test 是文件夹) else echo test 是文件pause第②种@echo offif exist test\nul (echo test 是文件夹) else echo test 是文件pause4。判断变量是否已经定义,if defined 变量 command 语句这是一个判断变量是否已被定义的语句,我们还是先看例子,例8,@echo offif defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)pause执行后显示:变量 a 没有被定义例9,@echo offset a=if defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)pause执行后显示:变量 a 没有被定义注意:set a=这后面是没有空格的。例10,@echo offset a=10if defined a (echo 变量 a 已定义) else (echo 变量 a 没有被定义)pause执行后显示:变量 a 已定义看了上面三个例子,你应该发现点什么了吧?现在我们应该知道了:当变量不存在或是值为空时,变量则为未定义。当我们用if defined 变量 command 语句判断变量是否被定义时,请注意 变量 为不使用引导符号%的变量名,不能用写为%变量%,否则出错。大家来试一下下面的这两个例子,例11,@echo offset var1=5if defined var1 (echo 变量var1已定义) else (echo 变量var1没有被定义)set /p var2=请输入一个数字:if defined %var2% (echo 变量var2已定义) else (echo 变量var2没有被定义)pause例12,@echo offset var1=5if defined var1 (echo 变量var1已定义) else (echo 变量var1没有被定义)set /p var2=请输入一个数字:if defined var2 (echo 变量var2已定义) else (echo 变量var2没有被定义)pause注意例11和例12哦:一个是%var2%而另一个是var25。判断上个命令的反回值,if errorlevel 数值 command 语句这个语句是用于判断上一个命令执行的返回值errorlevel,我们还是先来看看例子,例13,@echo off&net user&if %errorlevel% == 0 (echo net user 命令执行成功) else (echo net user 命令执行失败)&Pause注意:%errorlevel%& 这是个系统变量,所以用两个%括起来,这里的==为两个连续的=也许有些朋友说我上面的例子是不是写错了?按照语法应该写成“if errorlevel 0”才对的呀。如果你是这样用的话,那你就错了,还真不信呀?OK,我们来设计个实验看看例14,@echo off&set /p input=请输入任意一条命令:&if errorlevel 0 (echo %input% 命令执行成功) else (echo %input% 命令执行失败)pause用这种语法,不管你前面的命令,是否执行成功,它都会认为命令成功了。何解?if errorlevel& 语句的特点:当使用& if errorlevel 0 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于0 的时候,将执行cmmand操作;当使用& if %errorlevel%==0 cmmand 句式时,它含义是:如果返回的错误码值等于0 的时候,将执行cmmand操作。一般上一条命令的执行结果返回的值只有两个,"成功"用0 表示 "失败"用 1 表示,实际上,errorlevel 返回值可以在0~255 之间,例如xcopy 默认的errorlevel 值就有5 个,分别表示5 种执行状态:0复制文件成功&1 未找到复制文件&2 用户通过CTRL+C 终止了xcopy操作&4 出现了初始化错误 &5 出现了磁盘写入错误对于if 条件语句,常用的也就上面那5条吧,下面我们来看一下它的两种格式:if条件语句的完整格式是:if 条件表达式 (语句1) else (语句2)&它的含义是:如果 条件表达式 成立,就执行 语句1,否则,将执行 语句2。& else后的 语句2 也可以不用括号括起。if条件语句的简单格式是:if 条件表达式 (语句)它的含义是:如果 条件表达式 成立,将执行 语句,否则,什么都不做。条件表达式后的 语句 也可以不用括号括起。例15,@echo off&if exist "d:\123.txt" (del "d:\123.txt")pause你也可以写成下面这样哦~例16,@echo off&if exist "d:\123.txt" "d:\123.txt"pause补充1:if not 语句对于if 语句前面的5种基本语法,都可以加上not参数,如1。if not "字符串1"=="字符串2" command 语句;2。if not数值1 equ 数值2 command 语句;3。If not exist filename command 语句;4。if not defined 变量 command 语句;5。if not errorlevel 数值 command 语句。在if 条件表达式 (语句) 语句,如没有not参数,默认是判断条件成立时,执行语句;如有not参数,判断条件失败时,执行语句。我们看一下下面的例子:例17,@echo offif exist "c:\" (echo& C盘存在) else echo& C盘不存在pause执行后显示:C盘存在例18,@echo offif not exist "c:\" (echo& C盘存在) else echo& C盘不存在pause执行后显示:C盘不存在不会吧,例18中执行后显示:C盘不存在,这简值是在说瞎话了,那到底是什么回事呢?if not exist "c:\" (echo& C盘存在) else echo& C盘不存在此语句中文意思:如果不存在C:\ 就执行显示C盘存在;否则就执行显示C盘不存在。注:if exist 意为如果存在,那么if not exist就是如果不存在你的C盘当然是实实在在存在的啦,根椐上面的中文分得知,那执行例18后就显示为:C盘不存在& 通过分析例18,你应该明白if语句中not参数是怎么用了吧!
阅读(3940) | 评论(0) | 转发(0) |
上一篇:没有了
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 批处理 for 的文章

 

随机推荐