一天一篇批处理之——Part5: 跟变量/参数有关的高频命令set,shift,for

来源:互联网 发布:java支付平台开发demo 编辑:程序博客网 时间:2024/06/03 20:11

一天一篇批处理之——Part5: 跟变量/参数有关的高频命令set,shift,for


一, set
set是专门用来设置环境变量的命令,在一些复杂的批处理中,有时候自定义变量能够起到事半功倍的效果。
例1.1
set abc=b.bat
call %abc%
(注:b.bat文件中命令只有echo welcome to B blog)
显示:
welcome to B blog
这里call调用的实际是abc所指代的b.bat程序,我们再来看一下下面的例子
例1.2
set abc=b.bat
set abb=a.bat
set ab
call %abc%
set abc=
call %abc%
(注:b.bat文件中命令只有echo welcome to B blog)
显示:
abc=b.bat
abb=a.bat
welcome to B blog
这里set ab命令用来显示所有以ab开头的变量及其设置,及后面显示的abc=b.bat & abb=a.bat。
Set abc=命令是将abc变量重新设置为空,相当于是删除了abc变量,所以在这之后的abc变量调用是不起作用的。
二, shift
shift是用来自动更改批处理时参数的命令,在一些循环语句里shift经常会用到。
例2.1
创建file.bat文件如下:
@echo off
:cycle
if “%1”==“” goto end
echo %1运行:
call %1
shift
goto cycle
:end
(注:a.bat/b.bat/c.bat文件中命令只有echo welcome to A/B/C blog!)
运行cmd,输入file.bat a.bat b.bat c.bat,按enter。显示如下:
a.bat运行:
welcome to A blog!
b.bat运行:
welcome to B blog!
c.bat运行:
welcome to C blog!
%1是参数,在运行开始即赋值file.bat为%0,a.bat为%1,b.bat为2%,c.bat为3%;
Shift命令在每次运行时就给参数%1加1,即%1在运行一次后就会成为%2,再运行一次成为%3;读者可自行将echo off 换成echo on 看看是怎么运行的。
如果例2.1中去掉shift命令,则会一直不断地运行a.bat,满屏输出:
a.bat运行:
welcome to A blog!
三,for
For 用来批处理中进行循环处理的命令,命令的格式:FOR %%variable IN(set)DO command,格式说明如下:
%%variable 为指定一个单一字母作为可替换的参数,如%%a,%%b等
(set)指定一个或一组文件,如(*.bat),(1,1,10)等
Command 指定所执行的命令
FOR / IN / DO 为该命令的固定格式
例3.1
set /a sum=0
for %%x in (*.txt) do (
echo %%x文件显示如下:
type %%x
echo.
set /a sum=sum+1
)
echo 一共显示了%sum%个txt文件
注:该根目录下txt的文档只有a.txt(welcome to A blog!),b.txt(welcome to B blog!),c.txt(welcome to C blog!)三个文件
显示:
a.txt文件显示如下:
welcome to A blog!
b.txt文件显示如下:
welcome to B blog!
c.txt文件显示如下:
welcome to C blog!

一共显示4个txt文件!

For有4个参数,/d /l /r /f,因本人才疏学浅,这里简单摘录大神的文章,详细可以去看一下这篇文章:
http://www.cnblogs.com/focusHr/archive/2009/02/05/1384751.html
/d 仅为目录,不搜索文件,只搜索目录(文件夹),试一下这段命令

for /d %%i in (*) do @echo %%i
/r 文件搜索,支持根目录和子目录的搜索,试一下这段命令

for /r %%i in (*.exe) do @echo %%i
/l 迭代逐步执行一组范围的值,可设置起始/结尾/步长,试一下这段命令

 for /l %%i in (1,1,5) do @echo %%i
/f 这个比较复杂,也比较重要,大家直接连接到大神的文章去仔细推敲吧!

0 0
原创粉丝点击