Windows BAT脚本(批处理)——for循环,if判断,goto跳转,遍历文件名,start打开网页

  目录

for 语句

在cmd窗口中:for %I in (command1) do command2
在批处理文件中:for %%I in (command1) do command2
for语句的基本要素:

  1. for、in和do是for语句的关键字;
  2. %%I是for语句中对形式变量的引用;
  3. in之后,do之前的括号不能省略;
  4. command1表示字符串或变量,command2表示字符串、变量或命令语句;
    @echo off
    for %%i in(1, B, 3) do ehco %%i
    pause

if 语句

计算机只在乎0和1是吧?所以我们需要一种方法,来处理当条件是0的时候干什么,条件为1的时候又干什么。
好消息是 DOS 对条件语句支持的非常好。

检查文件或文件夹是否存在

IF EXIST "temp.txt" ECHO found

取反:

IF NOT EXIST "temp.txt" ECHO not found

If 和 Else 语句:

IF EXIST "temp.txt" (
    ECHO found
) ELSE (
    ECHO not found
)

NOTE: 在判断的表达式两边加上双引号,这样可以避免一些bug,比如变量不存在,导致语法错误。

检查变量是否初始化

IF "%var%"=="" (SET var=default value)

或者

IF NOT DEFINED var (SET var=default value)

检查变量是否与字符串匹配

SET var=Hello, World!

IF "%var%"=="Hello, World!" (
    ECHO found
)

或者不区分大小写来比较:

SET var=Hello, World!

IF /I "%var%"=="hello, world!" (
    ECHO found
)

算数运算符比较

SET /A var=1
IF /I "%var%" EQU "1" ECHO equality with 1
IF /I "%var%" NEQ "0" ECHO inequality with 0
IF /I "%var%" GEQ "1" ECHO greater than or equal to 1
IF /I "%var%" LEQ "1" ECHO less than or equal to 1

检查返回值

IF /I "%ERRORLEVEL%" NEQ "0" (
    ECHO execution failed
)

应用

@echo off是不显示本命令行及后面的所有命令行本身;echo是输出命令;
set aa=xia3,是给变量aa赋值为xia3,%aa%是使用此变量;

@echo off
set aa=xia3
echo %aa%
echo bb
pause

if 语句来判断是否已经赋值;
if defined str (echo %str%) else (echo 变量str的值为空)
注意:括号为英文状态下的(),否则执行不成功;

@echo off
set aa=xia3
if defined aa (echo %aa%) else (echo NULL)
pause

rem语句

REM语句是注释此行,相当于此行不执行;

@echo off
REM set aa=xia3
if defined aa (echo %aa%) else (echo NULL)
pause

goto 语句

goto label跳转到要执行的标签,标签由冒号与标签名组成;
多个标签之间要加上exit终止程序继续向下运行;
同名的标签,程序执行最上面的一个;
标签名必须是常量,不能是变量;

@echo off
set /p input=请输入字母A或B
if "%input%"=="A" goto A
rem 如果input值是A,会跳转到A的标签去运行,运行时将跳过gotoA与:A间的内容
if "%input%"==B”goto B
if not “%input%"=="A”(if not %input%=="B" goto C)
rem 如果输入的值不是A就进行下个判断,下一个判断,如果输入不是B就跳转到C语句;

:A
echo您输入的是A
pause
exit

:B
echo 是B
pause
exit

:C
echo不是A或者B
pause
exit

脚本应用

文件遍历,输出文件名;

用for循环遍历文件,用echo打印出文件名;
for /R %%s in (.,*) do (echo %%s)

@echo off
set path=D:\sc
rem set给path赋值
D:
rem 进入D盘目录,否则在当前test.bat目录下执行遍历;
cd %path%
rem 切换到相应路径下;
for /R %%i in(.,*) do(echo %%i)
rem 用for循环遍历文件
pause


dos中 【dir /?】,查看dir命令下的参数;dir /s显示指定目录和所有子目录的文件;【D:】切换目录到D盘下;

start用法;

start命令可以用来启动电脑上的软件;

@echo off
REM 就是启动IE浏览器,跳转到百度页面,并自动搜索‘苹果’;
start http://www.baidu.com/s?wd=苹果

自己设定搜索内容;

 @echo off
set /p key=你写啥就搜啥
start http:/wwwbaiducom/s?wd=%key%
pause

bat脚本搜索后,延迟10s,使用taskkill关掉我们打开的网站;

 @echo off
set /p key=你写啥就搜啥
start http:/wwwbaiducom/s?wd=%key%
ping -n 10 127.0.0.1 > nul
rem 让脚本延迟10秒,不然后面的关掉任务可能会执行失败
taskkill /fi "windowTitle eq %key%*”/f
rem 只要标题前面是"key"的窗口都关闭
pause

启动指定应用

@echo off
if %1=="hexo" goto HEXO

:HEXO
REM 启动HEXO博客系统 
cd E:\WorkBlog
e:
hexo server -p 80
exit 

文章作者: 改变世界
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 改变世界 !
评论