自学批处理笔记(8)

2019-03-23 14:16

(五)chkdsk 作用:检查磁盘并显示状态报告。

格式:CHKDSK 盘符\\路径\\文件名 [/F] [/V] [/R] [/X] [/I] [/C] [/L[:size]] 盘符 指定驱动器(后面跟一个冒号)、装入点或卷名。 文件名 可不写,仅用于 FAT/FAT32: 指定要检查是否有碎片的文件。 /F 修复磁盘上的错误。

/V 在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。 在 NTFS 上: 如果有清除消息,将其显示。 /R 查找不正确的扇区并恢复可读信息(隐含 /F)。

/L:size 仅用于 NTFS: 将日志文件大小改成指定的 KB 数。 如果没有指定

大小,则显示当前的大小。

/X 如果必要,强制卷先卸下卷的所有打开的句柄就会无效(隐含 /F)。 /I 仅用于 NTFS: 对索引项进行强度较小的检查。 /C 仅用于 NTFS: 跳过文件夹结构的循环检查。

/I 和 /C 命令行开关跳过卷的某些检查,减少运行 Chkdsk 所需的时间。

(六) convert:http://bbs.bathome.net/thread-13910-1-1.html

自学批处理笔记(12)if

二十六. if 批处理中很常用的一个命令

格式:IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command

NOT 指定只有条件为 false 的情况下, Windows XP 才应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件

为 true。

string1==string2 如果指定的文字字符串匹配,指定条件为 true。

EXIST filename 如果指定的文件名存在,指定条件为 true。

command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟一个执行 ELSE

关键字后的命令的 ELSE 命令。 一个一个进行讲解:

(一)if [not] string1==string2 命令1 else 命令2 如果sting1会等于string2则执行命令1否则执行命令2。

当然了这里的string1和string2也不一定都是相等的关系,有时也比较大小,可是我们不用><号而是用:

EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于

注意:if区分大小写,不区分字母大小写——使用参数“/i” if /i a == A echo “a”等于“A”

讲解:在IF命令后面使用参数“I”,表示不区分字母大小写。

区分大小写能够进行更精确的判断,不区分大小写则可以扩大判断的范围。 使用双引号:注意变量、标点符号等一些特殊字符的比较需要双引号,如: set var=我爱批处理

if /i \爱\第二个字是:爱。

一般字符串(数字除外)如果不能保证输入的字符是否有效值,最好使用双引号括起来。

来一个例子: @echo off

set /p var=请输入第一个比较字符: set /p var2=请输入第二个比较字符:

if %var% == %var2% (echo 我们相等) ELSE echo 我们不相等 pause

上面这个例子可以判断你输入的值是不是相等,但是你如果输入相同的字符,但是如果其中一个后面打了一个空格,

这个例子还是会认为相等,如何让有空格的输入不相等呢?我们在比较字符上加个双引号就可以了.又是命令有多行

这时我们就应该用()括起来。还有救是不要写成这样子: if %var1%==%var2% (echo 我们相等)else (echo 我们不相等)

要把(放在else那行这样系统才知道下面的是if的内容,否则系统会认为(echo我们不相等)是新命令。也就是

以后命令多了就:

if string1==string2 (命令1 命令2......)else ( 命令3

命令4....)

(二)IF [NOT] ERRORLEVEL number command

这个用法的基本做用是判断上一条命令执行结果的代码,以决定下一个步骤.一般上一条命令的执行结果代码只有

两结果,\成功\用0表示 \失败\用1(有时不是1)表示。还有就是%errorlevel%也是系统内的变量。

在举几个例子给新手理解 @echo off net usertest

IF %ERRORLEVEL% == 1 echo net user 执行失败了! pause

这个是判断上一条命令是否执行失败的 @echo off

set /p var=随便输入个命令: %var%

if %ERRORLEVEL% == 0 goto yes goto no :yes

echo !var! 执行成功了 pause exit :no

echo 基本上执行失败了.. pause

这个是根据你输入的命令,自动判断是成功还是失败了! 在来一个简化版的 @echo off

set /p var=随便输入个命令: %var%

if %ERRORLEVEL% == 0 (echo %var%执行成功了) ELSE echo %var%执行失败了! pause

else后面写上执行失败后的操作!

当然我门还可以把if else这样的语句分成几行写出来,使他看上去好看点... @echo off

set /p var=随便输入个命令: %var%

if %ERRORLEVEL% == 0 ( echo !var! 执行成功了 ) ELSE (

echo 基本上执行失败了.. )

pause

(三)IF [NOT] EXIST filename command

如果存在(不存在)文件名 就执行后面的命令,这就不多说了。 三个命令else都是可用课不用的。

好做一道之前还不过完善的练习:给定一窜字符,求长度。(来自网络) 这是代码: @echo off

set /p str=请输入任意长度的字符串: echo 你输入了字符串:\if not defined str (pause & goto :eof) set num=0 :len

set /a num+=1 set str=%str:~0,-1% if defined str goto len

echo 字符串长度为:%num% pause

(四)if defined 命令

判断一个变量是否为已经赋值。也就是判断变量是否为空。 1、defined

set /p var=请按任意键或回车:

if defined var echo ^%var^% 已经被赋值:%var% 讲解:假如变量%var%赋值,则显示后面内容。 注意:此处的变量名不必使用百分号“%”括住。 支持if的其它参数开关:

if not defined var (echo ^%var^% 没有被赋值:%var%) else (echo 已赋值) 当变量名为其它特殊符号时,需要双引号???(待) 2、两种检测空值方法比较

前面我们了解到一种判断变量是否为空的方法:if \为空!此处的 if defined 也有着同样的作用,并且比前者更有效。比较: if \——假如变量是空格……

if not defined var ——假如变量没有任何内容,也没有空格……

注意:空格也是一种特殊的值,准确地说,上者判断的是变量等于空格时的情况,而下者则判断所有情形,包括空格。因此,defined比前者更加彻底,包含了前者。 使用比较: @echo off

set /p a=输入字母Q:

if /i \你输入了字母Q。 set /p b=输入空格:

if \你输入了空格。(待)rem这里如果输入多个空格if 也认为是假的

set /p c=直接回车:

if not defined c echo 你直接回车了。

rem 这个等价于 if \你直接回车了。 pause

批处理中的if defined 需知:

源地址:http://www.bathome.net/thread-2050-1-10.html很详细 用 if defined 判断某个变量是否被定义过时需注意以下2点:

1、不能直接输入空格,有空格时需用变量来代替,且必须是用双!!来引用这个值含空格的变量 也就是必须开启延迟变量,或者将需判断的变量名赋值给 for 的 %%i 变量。 例如你运行下面代码会发现什么: @echo off set /a a+=1 if %a%==1 ( set b=1 echo %b% ) pause

解决方法一,使用开启变量延时用!b!来代替%b% 解决方法二,用call echo %%b%%代替echo %b% 解决方法三,用goto语句,在echo %b% 前面加上 goto a :a

2、若判断的变量名需要使用变量的字符截取功能时,则与上面的正好相反。 即:不能使用!!来引用变量,即使是在for中也是一样。


自学批处理笔记(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第二代网络的研究与发展现状

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: