四时宝库

程序员的知识宝库

批处理---2.批处理常用命令(二)(批处理入门)

&

顺序执行多条命令,并且不管命令是否执行成功

@echo off
echo hello world & echo no hello
pause

&&

顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令

@echo off
cd g:/ && echo no hello
pause

||

顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令

@echo off
echo hello world || echo no hello
pause

|

前一个命令的执行结果输出到后一个命令

@echo off
dir *.* /s/a | find /c ".exe" 
pause

上述命令,会先执行dir命令,显示当前目录下的所有文件和子目录,然后把结果传给find命令,输出.ext文件的个数.

@echo off
type abc.txt | find /c "efd"
pause

上述命令,type命令显示abc.txt的内容,然后find命令统计在该文件中所有存在 efd 的行数.

>

清除文件中原有的内容在输入

echo hello world > abc1.txt

在当前目录下,生成abc.txt,内容为hello world

%

命令行传递给批处理程序的参数

  • %0 批处理文件本身
  • %1 第一个参数
  • %2 第二个参数
  • %* 从第一个参数开始的所有参数 在C盘根目录下创建demo.bat,内容如下
@echo off
echo %0
echo %1
echo %2
echo %*

运行cmd,输入c:/demo.bat a b c d c d e cmd窗口显示

"C:\demo.bat"
a
b
a b c d e f

set

设置变量

set #显示目前所有可用的变量,包括系统变量和自定义的变量
echo %SystemDrive% #显示系统盘盘符。系统变量可以直接引用
set p #显示所有以p开头的变量,要是一个也没有就设errorlevel=1
set p=aa1bb1aa2bb2 #设置变量p,并赋值为 = 后面的字符串,即aa1bb1aa2bb2
echo %p% #显示变量p代表的字符串,即aa1bb1aa2bb2
echo %p:~6% #显示变量p中第6个字符以后的所有字符,即aa2bb2
echo %p:~6,3% #显示第6个字符以后的3个字符,即aa2
echo %p:~0,3% #显示前3个字符,即aa1
echo %p:~-2% #显示最后面的2个字符,即b2
echo %p:~0,-2% #显示除了最后2个字符以外的其它字符,即aa1bb1aa2b
echo %p:aa=c% #用c替换变量p中所有的aa,即显示c1bb1c2bb2
echo %p:aa=% #将变量p中的所有aa字符串置换为空,即显示1bb12bb2
echo %p:*bb=c% #第一个bb及其之前的所有字符被替换为c,即显示c1aa2bb2
set p=%p:*bb=c% #设置变量p,赋值为 %p:*bb=c% ,即c1aa2bb2
set /a p=39 #设置p为数值型变量,值为39
set /a p=39/10 #支持运算符,有小数时用去尾法,39/10=3.9,去尾得3,p=3set /a p=p/10
 #用 /a 参数时,在 = 后面的变量可以不加%直接引用set /a p="1&0"
 #"与"运算,要加引号。其它支持的运算符参见set/?
pause 
set p= #取消p变量
echo "设置p变量"
@echo off 
set /p p= #设置p变量
pause
echo "现在P的变量为" %p%
pause 
注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
@echo off
set p=aaa
if %p%==aaa ( 
echo %p% 
set p=bbb 
echo %p% )

结果将显示aaaaaa因为在读取 if 语句时已经将所有 %p% 替换为aaa这里的"替换",在 /? 帮助里就是指"扩充"、"环境变量扩充"可以启用"延缓环境变量扩充",用 ! 来引用变量,即!变量名

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa 
if %p%==aaa (
echo %p%
set p=bbb
echo !p! 
) 
pause 

结果将显示aaabbb 还有几个动态变量,运行 set 看不到

@echo off
echo "当前目录为:" %CD% 
echo "当前日期为:" %DATE%
echo "当前时间为:" %TIME%
echo "随机整数(介于0~32767):" %RANDOM%
echo "当前的errorlevel值" %ERRORLEVEL% 
echo "当前命令处理器扩展名版本号:" %CMDEXTVERSION%
echo %time% #精确到毫秒
pause 

xcopy

文件拷贝

xcopy d:/mp3 e:/mp3 /s/e/i/y

复制 d:/mp3 文件夹、所有子文件夹和文件到 e:/,覆盖已有文件,加 /i 表示如果 e:/ 没有 mp3 文件夹就自动新建一个,否则会有询问

ping

运行cmd,输入

ping baidu.com

后续会发一篇批处理常用命令的综合运用

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接