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

被折叠的 条评论
为什么被折叠?



