批处理(*.bat)的初次学习

本文介绍了一种使用批处理脚本获取本地计算机主机名的方法。通过解析ipconfig命令的输出,利用for循环和字符串处理技巧,成功提取并显示了主机名。

获取本地计算机的Host Name

什么是批处理,请参考下面链接或在百度中查找。

http://baike.baidu.com/link?url=bGQ9OXpCl_gztmXFNxDYESrC6LQZwFH998GRwW4VsMUGB5UsBOlJtwztNd9F8miE

 

代码如下:

=====================================================================================================================

@echo off

for /F "tokens=2 delims=:" %%X in ('ipconfig /all ^| findstr /i /c:"Host Name"') do set HOSTNAME=%%X

echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
echo ※                                                                                                                                                                  ※
echo ※                                                                本机的信息如下                                                                         ※
echo ※                                                                                                                                                                  ※
echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

@echo HOST NAME    %HOSTNAME%

echo.

pause>nul

=====================================================================================================================

代码解析:

第一行:

  echo命令:在执行时控制,控制命令行的显示或不显示。

      常用的用法:1.不显示命令行:@echo off

                          2.显示命令行   :echo

                          3.输出信息       :echo 输出的信息

           例如:

               

 

               

   

      其他功能:4.在DOS下面 键入echo off    只显示光标

                                                    echo off    显示当前路径

               

      

               

                  5.输出空行 echo. 第一个图片里面有列子

                  6.回答命令行提问    echo 答复语|命令文件名

                     执行中

                                     

                  7.新建文件夹、追加文件内容

                     echo 文件内容 > 文件名         建立文件

                     echo 文件内容 >> 文件名      往文件中添加内容

                     echo @echo off > tmp.txt

                     echo C:\Temp >> tmp.txt

                  8.是喇叭鸣响

                     echo ^G

第二行

for /F "tokens=2 delims=:" %%X in ('ipconfig /all ^| findstr /i /c:"Host Name"') do set HOSTNAME=%%X

格式:FOR [参数] %%变量名 IN (相关文件或命令)   DO 执行的命令

注意:在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable,而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

          %%变量名是批处理的格式

          FOR命令可以带参数或不带参数,带参数时支持以下参数:/L /F /D /R

  1.不带参数FOR循环  for %%i in (set) do command

      for %%i in (a,"b c", d) do echo %%i

     

  2.带开关/L  for /l %%i in (start,step,end) do command

     根据(,,)里面参数进行循环

     start:开始计数初期值

     step:递增值

     end:结束值

     for /l %%i (1,2,10) do md %%i 在当前文件夹中建立1、3、5、7、9的文件夹

    

  3.带开关/F  for /f ["opetion"] %%i in (set) do command    

     能操作字符串、能操作命令返回值、可以访问硬盘上的ASCII码

     opetion:eol=c、skip=n、delims=xxx、token=x,y,m-n、usebackg   可以使这其中一个或者多个组合

     set:"string"、"command"、file-set   可以使其中一个

     对于FOR /F %%i IN (file) DO command

     file为文件名,按照官方的说法是,for会依次将file中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,按照每一行分成一个一个的元素,忽略空白的行,看个例子。

     假如文件a.txt中有如下内容:

         第1行第1列 第1行第2列 第1行第3列

         第2行第1列 第2行第2列 第2行第3列

         第3行第1列 第3行第2列 第3行第3列

     for /f %%i in (a.txt) do echo %%i

         读出a.txt里面的所有内容,把它作为一个集合,并且以每一行作为一个元素,所以会产生这样的集合,

         {“第1行第1列 第1行第2列 第1行第3列”, rem 第一个元素

         “第2行第1列 第2行第2列 第2行第3列”, rem 第二个元素

         “第3行第1列 第3行第2列 第3行第3列”}   rem 第三个元素

         集合中只有3个元素,同样用%%i依次代替每个元素,然后执行do后面的命令。

         具体过程:

         用%%i代替“第1行第1列 第1行第2列 第1行第3列”,执行do后面的echo %%i,显示“第1行第1列 第1行第2列 第1行第3列”,

         用%%i代替“第2行第1列 第2行第2列 第2行第3列”,执行echo %%i,显示“第2行第1列 第2行第2列 第2行第3列”,依次,直到每个元素都代替完为止。

         为了加强理解/f的作用,请执行一下两个命令,对比即可明白:

         for /f %%i in (a.txt) do echo %%i rem 这个会显示a.txt里面的内容,因为/f的作用,会读出a.txt中的内容。

         for %%i in (a.txt) do echo %%i rem 而这个只会显示a.txt这个名字,并不会读取其中的内容。

     for命令还为我们提供了更详细的参数,使我们将每一行分为更小的元素成为可能。  delims和tokens

     delims 用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键

     tokens的作用就是当你通过delims将每一行分为更小的元素时,由它来控制要取哪一个或哪几个。

         for /f "delims= " %%i in (a.txt) do echo %%i

         显示的结果是: 第1行第1列

                                 第2行第1列

                                 第3行第1列

          这里有了delims这个参数,=后面有一个空格,意思是再将每个元素以空格分割,默认是只取分割之后的第一个元素。

          for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i

          执行结果: 第1行第2列

                           第2行第2列

                           第3行第2列

          for /f "tokens=2,3 delims= " %%i in (a.txt) do echo %%i %%j

          执行结果为:第1行第2列 第1行第3列

                              第2行第2列 第2行第3列

                              第3行第2列 第3行第3列

参考:http://hi.baidu.com/zhuyuli521/item/c0ca35177bcf3d582a3e2205

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值