5个用于更智能的Windows批处理脚本的IF语句

如果您在Windows批处理文件中做了很多工作,则 IF语句提供了一种非常强大的方法来增加脚本的灵活性。

在本文中,您将我们将了解您可以在Windows批处理文件中使用的IF语句的五种主要类型,正确的语法以及每个示例的实际示例。

如果您准备开始编写脚本,让我们上手!

1。比较值

批处理脚本中通常需要做的基本操作之一是比较两个值,并根据比较结果采取不同的操作步骤。

例如,假设您要编写一个批处理脚本,该脚本每天检查一次计算机的硬盘驱动器大小。如果它低于3 GB,则要获得一封电子邮件报告,说明“硬盘空间太低"。

要创建一个将当前可用硬盘空间与您的限制进行比较的脚本,您需要创建以下批处理脚本并将其保存为.bat文件。

@echo offset DriveLimit=300000000for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%xEcho FreeSpace="%FreeSpace%"Echo Limit="%DriveLimit%"If %FreeSpace% GTR %DriveLimit% ( Echo There is enough free space.) else ( Echo Not enough free space.)

WMIC是Windows的Windows Management Instrumentation组件,带有可用于提取PC信息的各种命令。这就是此脚本中的“ wmic"命令如何调用“逻辑磁盘"空间并将其放入FreeSpace变量中的方式。现在,您可以用一条简短的电子邮件命令替换“ Echo Not free free space"行,向您发送警报。

最后,将此脚本设置为每天运行的Windows计划批处理作业。

p>

如果您以前从未使用过blat,我们有一篇文章向您展示如何设置blat。不熟悉设置预定的工作?我们为您提供了有关如何设置Windows计划任务的文章。

2。字符串比较

在批处理作业中可以进行的另一个有价值的IF比较是比较字符串

在下面的示例中,您将看到如何检查您的字符串Windows版本使用批处理作业。然后,您可以将其与预期的Windows版本进行比较。

此脚本的某些用途是在需要快速运行脚本并确保当前操作系统为最新版本或是否为最新操作系统时用于IT审核。需要升级。

这是此脚本的样子。

@echo offfor /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%jif "%version%" == "6.0" echo Windows Vista.if "%version%" == "6.1" echo Windows 7if "%version%" == "6.2" echo Windows 8if "%version%" == "6.3" echo Windows 8.1if "%version%" == "10.0" echo Windows 10.

这是此脚本的输出结果。

在其中比较字符串的能力批处理打开了所有可能性的清单。如果您浏览所有可以从WMIC命令获得的信息,您将看到可以监视多少计算机统计信息。您可以使用计划的批处理作业来发出警报。

3。检查文件是否存在

另一个有用的情况是批处理文件中的IF语句用于检查数据文件是否存在

很多通常,批处理作业只是一个监视工具,可以安排它检查特定目录中是否有新的传入数据文件。

然后,批处理作业可以将该文件复制到另一个可以定位的位置被处理,或启动一些Windows脚本将文件处理为Excel输出。

(过去,我们曾写过有关如何使用Windows脚本将数据处理为Excel文件的文章;有些背景

使用批处理文件来检查目录中是否存在文件,这既快速又容易。这就是该脚本的样子。

@echo offif exist c:\temp\datafile.txt (  %WINDIR%\SysWOW64\cmd.exe cscript LoadToExcel.vbs) else ( rem file doesn't exist)

IF EXISTS比较对于许多事情很有用。

例如,如果您正在运行的系统或应用程序在其中创建新的错误日志,特定文件夹出现问题时,您可以经常运行批处理作业,以监视是否创建了新的错误日志,从而可以发送警报。

4。检查命令是否失败

批处理文件脚本编制的一个很少被IT人员或程序员使用的方面是检查错误

有很多分散在其中的批处理作业正在执行关键的IT任务,例如备份重要文件或运行文件复制操作。当这些批处理作业失败时,系统就会发生故障,并且人们会注意到。

当您的批处理作业未能通过命令之前时,人们会更聪明地收到警报。这样,您可以主动解决此问题。

您可以利用大多数应用程序和命令在运行后返回的%errorlevel%变量来执行此操作。

所有您需要做的跟随IF%ERRORLEVEL%命令。如果应用程序或命令返回零,则一切正常。如果不是,那么您需要向自己发送电子邮件。

@echo offxcopy C:\somefolder E:\backupfolderIF %ERRORLEVEL% NEQ 0 <blat command to send email>

您不必走电子邮件路线。您总是可以编写一个每天早晨可能检查的错误日志,或者启动另一个应用程序或命令来尝试使用备用命令进行复制的命令。无论您要执行什么操作,如果%ERRORLEVEL%允许您执行此操作。

如果您想使用IF语句来检查特定的错误代码,Windows会提供大量错误代码。

5。检查缺少的参数

最后一个有用的IF语句不是特定命令,而是检查脚本是否接收到适当的输入参数

例如,假设您编写了一个脚本,该脚本从输入文件夹向团队使用的公共网络文件夹执行xcopy命令。用户只需要在脚本名称后加上定义其个人文件路径的参数即可。

很显然,如果没有指定路径,您将无法正确执行脚本,因此您可以在开头添加IF语句脚本,以确保输入了两个参数。

这是它的外观。

@echo offIF [%1]==[] (GOTO sub_message) ELSE (xcopy %1 E:\backupfolder)GOTO eof:sub_messageecho You forgot to specify your path.:eof

如果您以前从未在批处理脚本中使用过参数,请在百分比符号后加上数字代表参数变量。 %1是第一个参数,%2是第二个参数,依此类推。

批处理作业功能强大

许多人开始将批处理作业用于需要执行的简单任务按顺序。借助IF语句,可以在脚本中添加更多的智能。

当然,如果您真的想提高它的档次,则可以考虑参考我们的VBA指南来创建VBA VBA应用程序,甚至甚至可以学习Python编程。

您通常可以使用这些高级语言,也可以学习使用PowerShell来完成许多当前与批处理作业相同的任务。

标签: Windows