基本功语法,详细的DOS命令和适合表明

by admin on 2019年1月31日

Windows cmd

一.简单批处理其中命令简介
1.Echo 命令
开辟回显或关闭请求回显功效,或显示音信。即使没有任何参数,echo
命令将显示当前回显设置。
语法
echo [{ on|off }] [message]
Sample:@echo off / echo hello world
在实质上选用中我们会把那条命令和重定向符号(也叫做管道符号,一般用>
>>
^)结合来兑现输入一些指令到特定格式的文本中.那将在随后的例子中反映出来。

windows bat(批处理)——基础语法

1 echo 和 @
回显命令
@         #关门单行回显
echo off      #从下一行开端关闭回显
@echo off      #从行业开头关闭回显。一般批处理第一行都是那么些
echo on       #从下一行开始打开回显
echo        #呈现当前是 echo off 状态依旧 echo on 状态
echo.       #出口一个”回车换行”,空白行
   #(同echo, echo; echo+ echo[ echo] echo/ echo)

对于跨平台的主次,平时会提供一些卓有成效的命令行工具,因而shell脚本、bat脚本文件就少不了了。互连网上shell的书、文章都游人如织的,所以精晓起来会相对简单的多,而windows下的bat网上则少有提到。那里不打算写windows
bat 编程大全,而是大约对bat做一个简约的入门级的读书。

2.@ 命令
表示不显示@前边的下令,在侵袭进程中(例如利用批处理来格式化仇人的硬盘)自然不可能让对方看到你使用的指令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite…
@format X: /q/u/autoset (format
那个命令是不得以接纳/y那些参数的,可喜的是微软留了个autoset那几个参数给大家,效果和/y是同样的。)

 

2 errorlevel
echo %errorlevel%
每个命令运行为止,可以用那一个命令行格式查看再次来到码
默许值为0,一般命令执行出错会设 errorlevel 为1

无论在写shell,依旧bat,它们的宏图都遵守那样一条原则:一切都是命令。Windows下命令是深浅写不灵敏的。

3.Goto 命令
指定跳转到标签,找到标签后,程序将拍卖从下一行起头的通令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto
noparms(如若那里的if、%1、%2你不知情的话,先跳过去,后边会有详尽的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以不管起,可是最为是有含义的假名啦,字母前加个:用来表示这些字母是标签,goto命令就是依照那么些:来搜寻下一步跳到到那里。最好有一对认证那样您别人看起来才会驾驭你的企图啊。

  1. @

3 dir
呈现文件夹内容
dir        #突显当前目录中的文件和子目录
dir /a      
#展现当前目录中的文件和子目录,包罗隐藏文件和系统文件
dir c: /a:d     #来得 C 盘当前目录中的目录
dir c: /a:-d     #展现 C 盘根目录中的文件
dir c: /b/p     #/b只突显文件名,/p分页突显
dir *.exe /s     #来得当前目录和子目录里富有的.exe文件

 

4.Rem 命令
表明命令,在C语言中一定与/*——–*/,它并不会被执行,只是起一个诠释的效果,便于别人阅读和您自己之后修改。
Rem Message
Sample:@Rem Here is the description.

行首有了它的话,这一行的指令就不出示了。

4 cd
切换目录
cd        #进去根目录
cd        #展示当前目录
cd /d d:sdk     #可以而且改变盘符和目录

大旨命令(rem, echo, @,/?)

rem:注释 (comment, remarks)。参数可以是任何内容。

echo :它有七个效益:打印音信、调试开关。若是参数是on
或者off,代表打开、关闭调试,倘若后边是其余内容,则参数代表要出口的音讯。为何就是debug开关呢?如果设置了echo
on,随后履行的其余命令及其实施结果都会输出到正式输出流。

@用来关闭某个命令的调试音信,意思是说选用@标注的一声令下不会打出命令自己、执行结果。

/? 查看命令支持

例如:

REM open the cmd echo
@echo on
echo hello, windows cmd 
@echo hello, windows cmd 

REM close the cmd echo
@echo off
echo hello, windows cmd 
@echo hello, windows cmd

 

执行结果: 

D:\Note\windows cmd>REM open the cmd echo

D:\Note\windows cmd>echo hello, windows cmd
hello, windows cmd
hello, windows cmd

D:\Note\windows cmd>REM close the cmd echo
hello, windows cmd
hello, windows cmd

 

对此REM的吩咐,也是会打到STD里,如若不希望观察,就足以行使@标注。 

 

 

5.Pause 命令

  1. echo

5 md
创造目录
md d:abc     #如果 d:a 不设有,将会自行成立中级目录
#若是命令增添名被停用,则必要键入 mkdir abc。

操纵命令(if-else, for-in-do, goto)

 

运行 Pause 命令时,将显得上面的音讯:
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d://back
echo Please put a new disk into driver A
pause
goto begin
在那几个例子中,驱动器 A
中磁盘上的具备文件均复制到d://back中。突显的笺注提示您将另一张磁盘放入驱动器
A 时,pause 命令会使程序挂起,以便你更换磁盘,然后按任意键继续处理。

2.1  echo [{on|off}] [message]

6 rd
删去目录
rd abc       #剔除当前目录里的 abc 子目录,须要为空目录
rd /s/q d:temp    #删去 d:temp 文件夹及其子文件夹和文件,/q安静方式

if-else

 

if [noterrorlevel number command [else expression] 基于上一个命令执行的结果进行判定操作

if [notstring1==string2 command [else expression] 判定两个字符串是否相等

if [notexist FileName command [else expression]  判定指定的文件是否存在

If command extensions are enabled, use the following syntax:

if [/istring1 CompareOp string2 command [else expression] 进行字符串比较 (equ, neq, lss, leq, gtr, geq)

if cmdextversion number command [else expression]

if defined variable command [else expression]

 

 

 

6.Call 命令
从一个批处理程序调用另一个批处理程序,并且不鸣金收兵父批处理程序。call
命令接受用作调用目的的标签。若是在本子或批处理公事外使用
Call,它将不会在指令行起功用。
语法
call [[Drive:][Path] FileName [BatchParameters]] [:label
[arguments]]
参数
[Drive: }[Path] FileName
点名要调用的批处理程序的任务和称号。filename 参数必须具有 .bat 或 .cmd
扩张名。

输出,回显。

7 del
删除文件
del d:test.txt    #去除指定文件,不可能是隐蔽、系统、只读文件
del /q/a/f d:temp*.*
删除 d:temp
文件夹里面的具有文件,包含隐藏、只读、系统文件,不包涵子目录
del /q/a/f/s d:temp*.*
删去 d:temp
及子文件夹里面的持有文件,包含隐藏、只读、系统文件,不包涵子目录

For-in-do

循环执行,命令语法:

for {%variable | %%variable} in (set) do command [CommandLineOptions]

1)For, in, do 是中央结构,必不可少;

2){%variable | %%variable} 要求的,变量大小写敏感。

在指令提醒符中执行for时,for中引用变量时,使用%

在批处理文件中实施for时,for中援引变量时,使用%%

其余,为了防止与bat文件的参数 %0到 %9相争辨,所以变量不可以是0-9的数字

3)( set ) 须要的。用于指定七个 files, directories, range of values,
textstrings。括号不能够省。

 

4)command 要求的,代表要执行的授命。

5)commandLineOptions, 执行command时所需的参数

 

更加多用法,可能参考:

 

 

7.start 命令
调用外部程序,所有的DOS命令和下令行程序都足以由start命令来调用。
侵略常用参数:
MIN 起先时窗口最小化
SEPARATE 在分手的半空中内开端 16 位 Windows 程序
HIGH 在 HIGH 优先级档次开始应用程序
REALTIME 在 REALTIME 优先级档次早先应用程序
WAIT 启动应用程序并听候它甘休
parameters 那一个为传送到命令/程序的参数
举行的应用程序是 32-位 GUI 应用程序时,CMD.EXE
不等应用程序终止就回去命令提醒。借使在命令脚本内举行,该新作为则不会时有暴发。
8.choice 命令
choice
使用此命令可以让用户输入一个字符,从而运行分裂的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的重返码为1234……
如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的情节如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end

2.2 on | off

8 ren
重命名命令
ren d:temp tmp    #支撑对文本夹的重命名

goto

语法:goto label

跳转到指定的label。倘使指定的label不设有,就继续执行下一条命令。倘诺找到label,就从label处继续执行。假如程序以正常顺序执行到一个label处,而不是透过goto跳转到label,label下的话语依旧以常规顺序执行。

 

home88一必发 1 

 

 

想要驾驭更加多指令参见:

 

 

 

 

 

 

 

:defrag
c://dos//defrag
goto end
:mem
mem
goto end
:end
echo good bye

它实质上是一个开关命令,就是说它唯有三种状态:打开和倒闭。于是就有了echo
on和echo off八个指令了。

9 cls
清屏

此文件运行后,将显得 defrag,mem,end[D,M,E]? 用户可挑选d m e
,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最终都以goto
end将先后跳到end标号处,然后程序将突显good bye,文件甘休。

(1)echo off

10 type
展现文件内容
type c:boot.ini   #来得指定文件的情节,程序文件一般会显示乱码
type *.txt     #来得当前目录里所有.txt文件的情节

9.If 命令

只体现执行结果

11 copy
拷贝文件
copy c:test.txt d:test.bak
复制 c:test.txt 文件到 d: ,不分畛域命名为 test.bak
copy con test.txt
从屏幕上等候输入,按 Ctrl+Z 截至输入,输入内容存为test.txt文件
con代表显示屏,prn代表打印机,nul代表空设备
copy 1.txt + 2.txt 3.txt
合并 1.txt 和 2.txt 的内容,保存为 3.txt 文件
一旦不点名 3.txt ,则保留到 1.txt
copy test.txt +
复制文件到温馨,实际上是修改了文本日期

if 代表将判断是或不是符合规定的尺码,从而决定推行分裂的命令。 有二种格式:

(2)echo on (默认)

12 title
设置cmd窗口的标题
title 新标题     #能够看看cmd窗口的标题栏变了

1、if “参数” == “字符串” 待执行的命令
参数要是等于指定的字符串,则条件建立,运行命令,否则运行下一句。(注意是三个等号)
如if “%1″==”a” format a:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto noparms

来得执行命令(除echo)和进行结果

13 ver
展现系统版本

2、if exist 文件名 待执行的授命
要是有指定的文件,则条件建立,运行命令,否则运行下一句。
如if exist config.sys edit config.sys

(3)> 输出重定向

14 label 和 vol
设置卷标
vol        #来得卷标
label       #呈现卷标,同时唤起输入新卷标
label c:system    #设置C盘的卷标为 system

3、if errorlevel / if not errorlevel 数字 待执行的授命
设若重回码等于指定的数字,则条件建立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
DOS程序运行时都会回去一个数字给DOS,称为错误码errorlevel或称重临码,常见的回到码为0、1。

始建或清空文件,然后把数据输出到文件

15 pause
停顿命令

10.for 命令
for 命令是一个相比较复杂的授命,主要用来参数在指定的范围内循环执行命令。
在批处理文件中动用 FOR 命令时,指定变量请使用 %%variable

echo hi > a.txt

16 rem 和 ::
诠释命令
注解行不执行操作

for { %variable|%%variable } in (set) do command [
CommandLineOptions]
%variable 指定一个纯粹字母可替换的参数。
(set) 指定一个或一组文件。可以拔取通配符。
command 指定对每个文件举办的吩咐。
command-parameters 为一定命令指定参数或命令行开关。
在批处理公事中动用 FOR 命令时,指定变量请使用 %%variable
而不用用 %variable。变量名称是分别轻重缓急写的,所以 %i 分化于 %I

把数量追加到文件

17 date 和 time
日期和岁月
date     #突显当今天子,并提醒输入新日期,按”回车”略过输入
date/t     #只显示当今天子,不擢升输入新日期
time     #来得当前时刻,并提醒输入新时间,按”回车”略过输入
time/t     #只展现当前时光,不升迁输入新时间

假定命令增加名被启用,下列额外的 FOR 命令格式会遭逢
支持:

echo this is a text >>a.txt

18 goto 和 :
跳转命令
:label     #行首为:表示该行是标签行,标签行不履行操作
goto label   #跳转到指定的价签那一行

FOR /D %variable IN (set) DO command [command-parameters]

 

19 find (外部命令)
搜寻命令
find “abc” c:test.txt
在 c:test.txt 文件里摸索含 abc 字符串的行
假诺找不到,将设 errorlevel 重回码为1
find /i “abc” c:test.txt
检索含 abc 的行,忽略大小写
find /c “abc” c:test.txt
呈现含 abc 的行的行数

假设集中蕴涵通配符,则指定与目录名匹配,而不与公事
名匹配。

echo hi > a.txt

20 more (外部命令)
逐屏突显
more c:test.txt   #逐屏突显 c:test.txt 的文书内容

FOR /R [[drive:]path] %variable IN (set) DO command [command-

type a.txt

21 tree
突显目录结构
tree d:      #来得D盘的文件目录结构

检查以 [drive:]path 为根的目录树,指向每个目录中的
FOR 语句。假设在 /R 后没有点名目录,则利用当前
目录。即使集仅为一个单点(.)字符,则枚举该目录树。

echo this is a text >>a.txt

22 &
逐一执行多条命令,而不管命令是还是不是执行成功

FOR /L %variable IN (start,step,end) DO command [command-para

type a.txt

23 &&
梯次执行多条命令,当碰到执行出错的授命后将不执行前面的吩咐
find “ok” c:test.txt && echo 成功
假设找到了”ok”字样,就显得”成功”,找不到就不显得

该集表示以增量格局从上马到完工的一个数字连串。

 

24 ||
逐条执行多条命令,当遇到执行不利的命令后将不履行前面的命令
find “ok” c:test.txt || echo 不成功
比方找不到”ok”字样,就浮现”不成事”,找到了就不展现

选择批处理公事

  1. 注释

25 |
管道命令
dir *.* /s/a | find /c “.exe”
管道命令表示先实施 dir 命令,对其出口的结果举行后边的 find 命令
该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数
type c:test.txt|more
以此和 more c:test.txt 的功能是如出一辙的

——常用命令

:: 或 rem

基本功语法,详细的DOS命令和适合表明。26 > 和 >>
出口重定向命令
> 清除文件中原始的情节后再写入
>> 追加内容到文件末尾,而不会去掉原有的情节
主要将本来显示在显示器上的情节输出到指定文件中
点名文件尽管不存在,则自动生成该公文
type c:test.txt >prn
屏幕上不突显文件内容,转向输出到打印机
echo hello world>con
在显示器上显得hello world,实际上所有出口都是默许 >con 的
copy c:test.txt f: >nul
拷贝文件,并且不显得”文件复制成功”的提醒消息,但如果f盘不设有,仍然会体现出错新闻
copy c:test.txt f: >nul 2>nul
不出示”文件复制成功”的提醒新闻,并且f盘不设有的话,也不显示错误提醒新闻
echo ^^W ^> ^W>c:test.txt
转变的文书内容为 ^W > W
^ 和 > 是决定命令,要把它们输出到文件,必须在头里加个 ^ 符号

echo、@、call、pause、rem
是批处理文件最常用的多少个指令,我们就从她们伊始学起。 echo
表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不出示命令行本身
@ 与echo
off相象,但它是加在其余命令行的最前方,表示运行时不显示命令行本身。
call 调用另一条批处理公事(假诺一贯调用其余批处理文件
,执行完那条文件后将不能履行当前文件一连命令)
pause 运行此句会暂停,突显Press any key to continue…
等待用户按任意键后继续
rem 代表此命令后的字符为解释行,不举行,只是给自己随后寻觅用的

 

27 <
从文件中拿走输入音讯,而不是从屏幕上
诚如用来 date time label 等急需等待输入的授命
@echo off
echo 2005-05-01>temp.txt
date <temp.txt
del temp.txt
如此那般就足以不等待输入直接修改当后天期

例:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理公事后可完成:将根目录中拥有文件写入
a.txt中,启动UCDOS,进入WPS等成效。

  1. “:”和 goto

28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
命令行传递给批处理的参数
%0 批处理文件本身
%1 第四个参数
%9 第九个参数
%* 从第三个参数开首的有所参数

批处理文件的情节为: 文件表示:

(1)goto

批参数(%n)的替代已被增进。您可以动用以下语法:

echo off 不显得命令行

跳转到标签

   %~1     – 删除引号(“),扩张 %1
   %~f1     – 将 %1 扩展到一个通通合格的路径名
   %~d1     – 仅将 %1 增添到一个驱动器号
   %~p1     – 仅将 %1 增添到一个路线
   %~n1     – 仅将 %1 伸张到一个文书名
   %~x1     – 仅将 %1 增加到一个文书扩大名
   %~s1     – 增添的路线指包罗短名
   %~a1     – 将 %1 扩张到文件属性
   %~t1     – 将 %1 增加到文件的日子/时间
   %~z1     – 将 %1 增添到文件的轻重缓急
   %~$PATH : 1 – 查找列在 PATH 环境变量的目录,并将 %1
   扩大到找到的首先个精光合格的称号。如果条件
   变量名未被定义,或者没有找到文件,此构成键会
   增添到空字符串

dir c:\*.* >a.txt 将c盘文件列表写入a.txt

(2):

可以结合修定符来取得多重结果:

call c:\ucdos\ucdos.bat 调用ucdos

概念一个标签

   %~dp1    – 只将 %1 增加到驱动器号和路线
   %~nx1    – 只将 %1 伸张到文件名和增加名
   %~dp$PATH:1 – 在列在 PATH 环境变量中的目录里寻找 %1,
   并增加到找到的首先个文件的驱动器号和路径。
   %~ftza1    – 将 %1 扩充到接近 DIR 的输骑行。
可以参见 call/? 或 for/? 看出每个参数的含意
echo load “%%1” “%%2”>c:test.txt
变化的文书内容为 load “%1” “%2”
批处理公事里,用那几个格式把命令行参数输出到文件

echo 你好 显示”你好”

 

29 if
认清命令
if “%1″==”/a” echo 第三个参数是/a
if /i “%1” equ “/a” echo 第四个参数是/a
/i 代表不区分轻重缓急写,equ 和 == 是如出一辙的,其余运算符参见 if/?
if exist c:test.bat echo 存在c:test.bat文件
if not exist c:windows (
   echo 不存在c:windows文件夹
   )
if exist c:test.bat (
   echo 存在c:test.bat
   ) else (
   echo 不存在c:test.bat
   )

pause 暂停,等待按键继续

            Sample:

30 setlocal 和 endlocal
安装”命令增加名”和”延缓环境变量扩张”
SETLOCAL ENABLEEXTENSIONS      #启用”命令扩大名”
SETLOCAL DISABLEEXTENSIONS      #停用”命令扩大名”
SETLOCAL ENABLEDELAYEDEXPANSION    #启用”延缓环境变量扩大”
SETLOCAL DISABLEDELAYEDEXPANSION    #停用”延缓环境变量伸张”
ENDLOCAL            #回复到利用SETLOCAL语句以前的景况
“命令扩充名”默许为启用
“延缓环境变量增加”默认为停用
批处理终结系统会自行回复默许值
可以修改注册表以禁用”命令伸张名”,详见 cmd /?
。所以用到”命令扩充名”的程
序,指出在开端和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL
语句,以确
保程序能在此外系统上科学运行
“延缓环境变量扩大”主要用于 if 和 for 的契合语句,在 set
的求证里有其实用例程

rem 使用wps 注释将利用wps

[python] 

31 set
安装变量
引用变量可在变量名前后加 % ,即 %变量名%
set        
#显示近年来有所可用的变量,包涵系统变量和自定义的变量
echo %SystemDrive%    #突显系统盘盘符。系统变量可以直接引用
set p       
#浮现所有以p起初的变量,假如一个也不曾就设errorlevel=1
set p=aa1bb1aa2bb2    #安装变量p,并赋值为 =
后面的字符串,即aa1bb1aa2bb2
基本功语法,详细的DOS命令和适合表明。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=3
set /a p=p/10     #用 /a 参数时,在 = 前面的变量可以不加%直接引用
set /a p=”1&0″     #”与”运算,要加引号。其它辅助的运算符参见set/?
set p=        #取消p变量
set /p p=请输入
显示屏上显得”请输入”,并会将输入的字符串赋值给变量p
留神那条可以用来顶替 choice 命令
专注变量在 if 和 for 的复合语句里是两回性全体互换的,如
@echo off
set p=aaa
if %p%==aaa (
   echo %p%
   set p=bbb
   echo %p%
   )
结果将显得
aaa
aaa
因为在读取 if 语句时已经将所有 %p% 替换为aaa
此间的”替换”,在 /? 协助里就是指”增加”、”环境变量扩张”
可以启用”延缓环境变量扩展”,用 ! 来引用变量,即 !变量名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaa
if %p%==aaa (
   echo %p%
   set p=bbb
   echo !p!
   )
ENDLOCAL
结果将突显
aaa
bbb
还有多少个动态变量,运行 set 看不到
%CD%        #代表当前目录的字符串
%DATE%       #时下日期
%TIME%       #此时此刻时刻
%RANDOM%       #自由整数,介于0~32767
%ERRORLEVEL%     #当前 ERRORLEVEL 值
%CMDEXTVERSION%    #眼前命令处理器伸张名版本号
%CMDCMDLINE%     #调用命令处理器的原始命令行
可以用echo命令查看各种变量值,如 echo %time%
小心 %time% 精确到毫秒,在批处理需求延时处理时可以用到

cd ucdos 进入ucdos目录

if {%1}=={} goto noparms  

32 start
批处理中调用外部程序的下令,否则等外部程序达成后才继续执行剩下的命令

wps 使用wps

if {%2}=={} goto
noparms(假设那里的if、%1、%2你不亮堂的话,先跳过去,后边会有详实的解释。)
 

33 call
批处理中调用另外一个批处理的一声令下,否则剩下的批处理指令将不会被执行
奇迹有的应用程序用start调用出错的,也得以call调用

批处理文件中还足以像C语言一样采取参数,这只需用到一个参数表示符%。

@Rem check parameters if null show usage  

34 choice (外部命令)
挑选命令
让用户输入一个字符,从而接纳运行差其他命令,重回码errorlevel为1234……
win98里是choice.com
win2000pro里没有,可以从win98里拷过来
win2003里是choice.exe
choice /N /C y /T 5 /D y>nul
延时5秒

%表示参数,参数是指在运作批处理公事时在文件名后加的字符串。变量可以从
%0到%9,%0代表文件名本身,字符串用%1到%9逐个表示。

:noparms  

35 assoc 和 ftype
文件涉及
assoc 设置’文件扩充名’关联,关联到’文件类型’
ftype 设置’文件类型’关联,关联到’执行顺序和参数’
当你双击一个.txt文件时,windows并不是依照.txt直接判断用 notepad.exe
打开
而是先判断.txt属于 txtfile ‘文件类型’
再调用 txtfile 关联的下令行 txtfile=%SystemRoot%system32NOTEPAD.EXE %1
可以在”文件夹选项”→”文件类型”里修改那2种关系
assoc      #显示所有’文件增添名’关联
assoc .txt    #突显.txt代表的’文件类型’,结果突显 .txt=txtfile
assoc .doc    #突显.doc代表的’文件类型’,结果显示.doc=Word.Document.8
assoc .exe    #突显.exe代表的’文件类型’,结果展现 .exe=exefile
ftype      #来得所有’文件类型’关联
ftype exefile   #突显exefile类型关联的命令行,结果显示 exefile=”%1″
%*
assoc .txt=Word.Document.8
设置.txt为word类型的文档,可以看来.txt文件的图标都变了
assoc .txt=txtfile
恢复生机.txt的正确关联
ftype exefile=”%1″ %*
过来 exefile 的不错关联
若果该关联已经被毁损,可以运作 command.com ,再输入那条命令

诸如,C:根目录下一批处理文件名为f.bat,内容为 format %1

echo Usage: monitor.bat ServerIP PortNumber  

36 pushd 和 popd
切换当前目录
@echo off
c: & cd & md mp3    #在 C: 建立 mp3 文件夹
md d:mp4       #在 D: 建立 mp4 文件夹
cd /d d:mp4      #改变当前目录为 d:mp5
pushd c:mp3      #封存当前目录,并切换当前目录为 c:mp4
popd         #平复当前目录为刚刚保存的 d:mp5

则只要执行C:\>f a: 则实际施行的是format a:

goto end  

37 for
循环命令
这一个比较复杂,请对照 for/? 来看
for %%i in (c: d: e: f:) do echo %%i
梯次调用小括号里的每个字符串,执行 do 前面的一声令下
注意%%i,在批处理中 for 语句调用参数用2个%
默许的字符串分隔符是”空格键”,”Tab键”,”回车键”
for %%i in (*.txt) do find “abc” %%i
对当前目录里拥有的txt文件实施 find 命令
for /r . %%i in (*.txt) do find “abc” %%i
在当前目录和子目录里富有的.txt文件中查找包蕴 abc 字符串的行
for /r . %%i in (.) do echo %%~pni
显示当前目录名和所有子目录名,包涵路径,不包罗盘符
for /r d:mp3 %%i in (*.mp3) do echo %%i>>d:mp3.txt
把 d:mp5 及其子目录里的mp5文书的公文名都存到 d:mp4.txt 里去
for /l %%i in (2,1,8) do echo %%i
扭转2345678的一串数字,2是数字连串的始发,8是最后,1意味每一回加1
for /f %%i in (‘set’) do echo %%i
对 set 命令的出口结果循环调用,每行一个
for /f “eol=P” %%i in (‘set’) do echo %%i
取 set 命令的输出结果,忽略以 P 先导的那几行
for /f %%i in (d:mp3.txt) do echo %%i
彰显 d:mp4.txt 里的种种文件名,每行一个,不接济带空格的称谓
for /f “delims=” %%i in (d:mp3.txt) do echo %%i
显示 d:mp4.txt 里的每个文件名,每行一个,帮衬带空格的称呼
for /f “skip=5 tokens=4” %%a in (‘dir’) do echo %%a
对 dir 命令的结果,跳过后面5行,余下的每行取第4列
每列之间的相间符为默认的”空格”
可以小心到 dir 命令输出的前5行是没有公文名的
for /f “tokens=1,2,3 delims=- ” %%a in (‘date /t’) do (
   echo %%a
   echo %%b
   echo %%c
   )
对 date /t 的出口结果,每行取1、2、3列
第一列对应指定的 %%a ,后边的 %%b 和 %%c 是派生出来的,对应此外列
分隔符指定为 – 和”空格”,注意 delims=- 前面有个”空格”
内部 tokens=1,2,3 若用 tokens=1-3 替换,效果是一样的
for /f “tokens=2* delims=- ” %%a in (‘date /t’) do echo %%b
取第2列给 %%a ,其后的列都给 %%b

又如C:根目录下一批处理公事的名为t.bat,内容为 type %1 type %2

5.Pause

38 subst (外部命令)
炫耀磁盘。
subst z: serverd    #如此那般输入z:就足以访问serverd了
subst z: /d      #打消该映射
subst        #突显方今所有的映时

那么运行C:\>t a.txt b.txt 将逐一地浮现a.txt和b.txt文件的始末

运转 Pause 命令时,将显得上边的音信:

39   xcopy (外部命令)
文件拷贝
xcopy d:mp3 e:mp3 /s/e/i/y
复制 d:mp4 文件夹、所有子文件夹和文书到 e: ,覆盖已有文件
加 /i 表示一旦 e: 没有 mp5 文件夹就自行新建一个,否则会有打探

应用批处理公事

[python] 

 

——特殊命令
if goto choice for
是批处理公事中相比高级的通令,若是那多少个你用得很内行,你就是批处理公事的大家啦。

Press any key to continue . . .  

 

if 表示将判断是还是不是符合规定的原则,从而控制执行差其他指令。 有三种格式:
1、if “参数” == “字符串” 待执行的一声令下
参数即便等于指定的字符串,则条件建立,运行命令,否则运行下一句。(注意是五个等号)
如if “%1″==”a” format a:

 

批处理中符号的意思
一、单符号
~
① 在for中表示使用增强的变量扩大。
② 在%var:~n,m%中意味着使用扩充环境变量指定地点的字符串。
③ 在set/a中象征一元运算符,将操作数按位取反。
!
① 在set /a中一元运算符,表示逻辑非。比如set /a
a=!0,那时a就表示逻辑1。
@
① 隐藏命令行本身的回显,常用于批处理中。
$
① 在findstr命令里面表示一行的收尾。
② 在prompt命令里面,表示将其后的字符转义(符号化或者效果化)。
%
① 在set /a中的二元运算符,表示算术取余。

命令行环境下,在for命令in前,后边接一个字符(可以是字母、数字或者有些特定字符),表示指定一个巡回或者遍历目标变量。
③ 批处理中,后接一个数字代表援引本批处理当下实施时的指定的参数。
④ 其余意况下,%将会被脱去(批处理)或保留(命令行)
^
① 废除一定字符的转义作用,比如& | > < !
“等,但不包罗%。比如要在显示屏突显一些非同常常的字符,比如> >> | ^
&等标志时,就足以在其面前加一个^符号来突显那几个^前面的字符了,^^就是显得一个^,^|就是显得一个|字符了;
② 在set/a中的二元运算符,表示按位异或。
③ 在findstr/r的[]中意味不同盟指定的字符集。
&

命令连接字符。比如自己要在一行文本上同时施行八个指令,就足以用&命令连接那多少个指令。
② 在set/a中是按位与。
*

代表擅自个随机字符,就是我们平常所说的”通配符”;比如想在c盘的根目录查找c盘根目录里富有的公文文件(.txt),那么就可以输入指令”dir
c:\*.txt”。
② 在set /a中的二元运算符,表示算术乘法。

2、if exist 文件名 待执行的授命
若果有指定的文书,则条件建立,运行命令,否则运行下一句。如if exist
config.sys edit config.sys

Sample:

③ 在findstr/r中象征将前一个字符多次分外。


范围表示符,比如日期的追寻,for命令里的tokens操作中就可以用到这么些字符。
② 在findstr/r中老是四个字符表示非凡范围。
③ -跟在某些命令的/后表示取反向的开关。
④ 在set /a中:
1.意味一个负数。
2.表示算术减运算。


  • 首假设在copy命令里面会用到它,表示将许四个文本合并为一个文书,就要用到那一个+字符了。
    ② 在set/a中的二元运算符,表示算术加法。
    :

    标签定位符,表示将来的字符串为以标签,可以看作goto命令的功用对象。比如在批处理公事之中定义了一个”:begin”标签,用”goto
    begin”命令就足以转到”:begin”标签前边来执行批处理命令了。
    ② 在%var:string1=string2%中分隔变量名和被替换字串关系。
    |
    ① 管道符,就是将上一个下令的出口,作为下一个下令的输入.”dir /a/b
    |more”就可以逐屏的彰显dir命令所出口的音讯。
    ② 在set/a中的二元运算符,表示按位或。
    ③ 在支持文档中象征其左右七个开关、选项或参数是二选一的。
    /
    ① 意味之后的字符(串)是命令的功用开关(选项)。比如”dir
    /s/b/a-d”表示”dir”命令指定的不等的参数。
    ② 在set/a中意味除法。
    >

    命令重定向符,将其眼前的吩咐的出口结果再行定向到其背后的设备中去,前面的装置中的内容被遮盖。比如可以用”dir
    > lxmxn.txt”将”dir”命令的结果输出到”lxmxn.txt”那几个文件文件中去。
    ② 在findstr/r中象征格外单词的右侧界,须要卓殊转义字符\使用。
    <
    ① 将其背后的文书的始末作为其前方命令的输入。

    ② 在findstr/r中代表万分单词的左侧界,要求非常转义字符\使用。

    ① 赋值符号,用于变量的赋值。比如”set
    a=windows”的情致意思是将”windows”这一个字符串赋给变量”a”。
    ② 在set/a中意味算术运算,比如”set /a x=5-6*5″。
    \

    这个”\”符号在部分情状下,代表的是当前路线的根目录.比如当前目录在c:\windows\system32下,那么你”dir
    \”的话,就一定与”dir c:\”。
    ② 在findstr/r中代表正则转义字符。
    ,
    ① 在set /a中意味接二连三表达式的分割符。
    ② 在某些命令中分割元素。
    .
    ① 在路径的\后紧跟或者独立出现时:
    一个.象征当前目录。
    三个.表示上一流目录。
    ② 在途径中的文件名中出现时:
    末尾的一个.代表主文件名与扩充文件名的相间。
    ?
    ① 在findstr/r中表示在此任务匹配一个无限制字符。
    ② 在途径中意味着在此岗位通配任意一个字符。
    ③ 紧跟在/后代表收获命令的帮忙文档。
    二、多符号(符号无法分隔)
    &&
    ① 连接三个指令,当&&前的下令成功时,才实施&&后的命令。
    ||
    ① 连接八个指令,当||前的授命失利时,才实施||后的吩咐。
    >&
    ① 将一个句柄的出口写入到另一个句柄的输入中。
    <&
    ① 从一个句柄读取输入并将其写入到另一个句柄输出中。
    %%
    ① 多少个再而三的%表示在预处理中脱为一个%。

    批处理中,在for语句的in子句以前,一连多个%紧跟一个字符(可以是字母、数字和有些一定字符),表示指定一个循
    环或者遍历目标变量。

    批处理中,在for语句中,使用与in从前指定的指标变量相同的串,表示援引这一个目标变量。
    >>
    ① 命令重定向符,将其眼前的指令的输出结果扩张到其背后的装备中去。

    ② 在set /a中的二元运算符,表示逻辑右移。

    ① 在if命令中判断==两边的元素是不是同样。
    <<
    ① 在set /a中的二元运算符,表示逻辑左移。
    +=

    ① 在set /a中的二元运算符。例如set /a a+=b代表将a加上b的结果赋值给a。

    ① 在set /a中的二元运算符。例如set /a a-=b表示将a减去b的结果赋值给a。
    *=
    ① 在set /a中的二元运算符。例如set /a a*=b代表将a乘以b的结果赋值给a。
    /=
    ① 在set /a中的二元运算符。例如set /a a/=b代表将a加上b的结果赋值给a。
    %=
    ① 在set /a中的二元运算符。例如set /a a%=b表示将a除以b的余数赋值给a。
    【注:命令行可以平昔用 set /a a%=b ,在批处理之中可以用 set /a a%%=b
    。】
    ^=
    ① 在set /a中的二元运算符。例如set /a
    a”^=”b表示将a与b按位异的结果赋值给a。
    【注:那里 “^=” 加引号是为着避防^被转义,下同。】
    &=
    ① 在set /a中的二元运算符。例如set /a
    a”&=”b表示将a与b按位与的结果赋值给a。
    |=
    ① 在set /a中的二元运算符。例如set /a
    a”|=”b表示将a与b按位或的结果赋值给a。
    <<=
    ① 在set /a中的二元运算符。例如set /a
    a”<<=”b表示将a按位左移b位的结果赋值给a。
    >>=
    ① 在set /a中的二元运算符。例如set /a
    a”>>=”b表示将a按位右移b位的结果赋值给a。
    \<
    ① 在findstr的一般表达式中象征字的初始处。
    \>
    ① 在findstr的貌似表明式中意味字的终止处。
    三、双符号对(多少个标志之间须指定字符串)
    ! !
    ① 当启用变量延迟时,使用!!将变量名扩起来表示对变量值的引用。
    ‘ ‘
    ① 在for/f中表示将它们含有的始末当作命令行执行并分析其出口。
    ② 在for/f “usebackq”中意味将它们含有的字符串当作字符串分析。
    ( )

    命令包涵或者是所有优先权的界定符,比如for命令要用到那一个(),大家仍是可以够在if,echo等一声令下中看出它的身影。
    ② 在set /a中代表表明式分组。
    ” “

    界定符,在代表带有空格的路径时常要用””来将路径括起来,在一部分发令里面也急需”
    “符号。
    ② 在for/f将官表示它们包罗的始末当作字符串分析。
    ③ 在for/f “usebackq”表示它们含有的始末作为文件路径并分析其文件的情节。

    在其余境况下表示其中的始末是一个完全的字符串,其中的>、>>、<、&、|、空格等不再转义。
    ` `
    ① 在for/f中表示它们所富含的始末当作命令行执行并分析它的输出。
    % %

    使用四个单身的%包罗一个字符串表示援引以此串为名的环境变量。比如一个%time%方可扩充到当下的种类时间。
    [ ]
    ① 在支援文档表示其中的开关、选项或参数是可选的。
    ② 在findstr /r中意味着按其中指定的字符集匹配。

 

dos 批处理 字符处理

扩张名是bat(在nt/2000/xp/2003下也得以是cmd)的文本就是批处理公事。
==== 注 =======================================
.bat是dos下的批处理公事
.cmd是nt内核命令行环境的另一种批处理文件
从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳举行表明施行的公文,都享有与批处理公事相当相似的效应,而且同样是由专用解释器以行为单位表明实施,那种文本格局更通用的名号是脚本语言。所以从某个程度分析,batch,
unix shell, awk, basic, perl

3、if errorlevel 数字 待执行的下令
一旦重回码等于指定的数字,则条件建立,运行命令,否则运行下一句。如if
errorlevel 2 goto x2
DOS程序运行时都会重回一个数字给DOS,称为错误码errorlevel或称再次来到码

[python] 

等脚本语言都是一致的,只不过应用的限量和平解决说的阳台各有分歧而已。甚至有些应用程序依旧沿用批处理这一称呼,而其内容和扩充名与dos的批处理却又完全差距。

先是批处理公事是一个文件文件,这一个文件的每一行都是一条DOS命令(大多数时候就好象大家在DOS提醒符下执行的命令行一样),你可以选取DOS下的Edit或者Windows的记事本(notepad)等其他公文文件编制工具创制和修改批处理文件。
==== 注 ===================

goto 批处理文件运行到这边将跳到goto 所指定的标注处, 一般与if合营使用。
如:

@echo off  

批处理文件中完全可以行使非dos命令,甚至足以行使不有所可进行特性的平时数据性文件,那缘于windows系统这几个最新解释平台的涉入,使得批处理的使用更加”边缘化”。所以咱们谈谈的批处理相应限制在dos环境如故命令行环境中,否则广大价值观和设定都亟待做相比较大的改动。

说不上,批处理公事是一种不难的先后,可以经过规范语句(if)和流程控制语句(goto)来支配命令运行的流程,在批处理中也得以选用循环语句(for)来循环执行一条命令。当然,批处理公事的编程能力与C语言等编程语句比起来是不行零星的,也是不行不专业的。批处理的主次语句就是一条条的DOS命令(包含内部命令和外部命令),而批处理的力量根本取决于你所选取的一声令下。
==== 注 ==================
批处理公事(batch file)也可以称之为批处理程序(batch
program),这点与编译型语言有所差别,就c语言来说,增添名为c或者cpp的公文可以称作c语言文件或者c语言源代码,但唯有编译连接后的

goto end

:begin  

exe文件才得以称作c语言程序。因为批处理公事本身既具备文本的可读性,又颇具程序的可执行性,这个称谓的底限是相比模糊的。

其三,每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来驱动它能够在随机地方运行。一个一石两鸟的习惯是在硬盘上树立一个bat或者batch目录(例如C:BATCH),然后将拥有你编写的批处理文件放到该目录中,那样若是在path中安装上
c:atch,你就可以在随心所欲地点运行具有你编写的批处理程序。
==== 注 =====
纯以dos系统而言,可执行程序大致能够分开为五类,根据执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),COMMAND.COM中的内部命令(根据内存的环境随时进驻内存),以com为扩张名的可执行程序(由command.com
直接载入内存),以exe位增加名的可执行程序(由command.com
重定位后载入内存),以bat位扩大名的批处理程序(由command.com

:end
echo this is the end

echo Pause  

诠释分析,按照其情节按优先级顺序调用第2,3,4,5种可执行程序,分析一行,执行一行,文件本身不载入内存)

第四,在DOS和Win9x/Me系统下,C:盘根目录下的AUTOEXEC.BAT批处理文件是电动运行批处理公事,每趟系统启动时会自动运行该文件,你可以将系统每便启动时都要运行的吩咐放入该公文中,例如设置搜索路径,调入鼠标驱动和磁盘缓存,设置系统环境变量等。上边是一个运转于Windows
98下的autoexec.bat的以身作则:
@ECHO OFF
PATH C:WINDOWS;C:WINDOWSCOMMAND;C:UCDOS;C:DOSTools;
C:SYSTOOLS;C:WINTOOLS;C:BATCH
LH SMARTDRV.EXE /X
LH DOSKEY.COM /insert
LH CTMOUSE.EXE
SET TEMP=D:TEMP
SET TMP=D:TEMP
==== 注 =====
AUTOEXEC.BAT为DOS系统的全自动运行批处理公事,由COMMAND.COM启动时解释实施;
而在Win9x环境中,不仅平添帮衬了 漫步者TART.BAT, WINSTART.BAT
等居多任何活动运行的批处理文件,对AUTOEXEC.BAT 也扩张了 .DOS .W40 .BAK
.OLD .PWS 等重重变体以适应复杂的条件和多变的须求。
==== willsort 编注 =============
以下关于命令的归类,有为数不少值得推敲的地点。常用命令中的@本不是命令,而dir、copy等也很常用的指令却尚无列入,
而特殊命令中装有命令对本身的话都是常用命令。提议将批处理所引述的授命分为内部命令、外部命令、第三方程序三类。而其间命令和外部命令中别有一类是专用于或常用于批处理中的命令可称为”批处理命令”。
以下摘录MS-DOS 6.22
协理文档中有关”批处理命令”的文字,当然,其中有些概念和概念已经有些落伍了。
批处理命令
批处理文件或批处理程序是一个包涵若干MS-DOS命令的正文文件,伸张名为.BAT。当在指令提醒符下敲入批处理程序的名号时,MS-DOS成组执行此批处理程序中的命令。

标明用 :字符串 表示,标号所在行不被执行

pause  

别的在指令提示符下可接纳的命令都可用在批处理程序中。其余,上边MS-DOS命令是特目的在于批处理程序中应用的。

常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批处理公事最常用的几个指令,大家就从他们早先学起。
==== 注 ===========
首先, @ 不是一个命令, 而是DOS 批处理的一个卓殊标记符,
仅用于屏蔽命令行回显.
上面是DOS命令行或批处理中可能会合到的一些更加标记符:
CR(0D) 命令行截止符
Escape(1B) ANSI转义字符引导符
Space(20) 常用的参数界定符
Tab(09) ; = 不常用的参数界定符

  • COPY命令文件连接符
    * ? 文件通配符
    “” 字符串界定符
    | 命令管道符
    < > >> 文件重定向符
    @ 命令行回显屏蔽符
    / 参数开关指导符
    : 批处理标签教导符
    % 批处理变量指引符
    协助, :: 确实能够起到rem 的注解成效, 而且更简明有效; 但有两点要求注意:
    首先, 除了 :: 之外, 任何以 :开首的字符行, 在批处理中都被作为标号,
    而直接忽略其后的持有情节, 只是为着与正常的标注相不同, 指出利用 goto
    所无法甄其他标注, 即在 :后紧跟一个非字母数字的一个特殊符号.
    第二, 与rem 分化的是, ::后的字符行在实践时不会回显, 无论是或不是用echo
    on打开命令行回显状态, 因为命令解释器不以为他是一个使得的命令行,
    就此点来看, rem 在少数场面下将比 :: 更为适用; 其余, rem 可以用于

    config.sys 文件中.

    echo 表示突显此命令后的字符
    echo off 代表在此语句后具备运行的通令都不显得命令行本身
    @与echo
    off相象,但它是加在每个命令行的最终面,表示运行时不突显这一行的命令行(只可以影响当下行)。
    call
    调用另一个批处理文件(假设不用call而直接调用其他批处理公事,那么执行完那一个批处理文件后将不可以回到当前文件并实施当前文件的后续命令)。
    pause 运行此句会暂停批处理的推行并在显示器上出示Press any key to
    continue…的唤起,等待用户按任意键后继续
    rem
    代表此命令后的字符为解释行(注释),不履行,只是给自己之后参考用的(相当于程序中的注释)。
    ==== 注 =====
    那里的叙说相比凌乱, 不如间接引用个指令的命令行扶助更为系统


ECHO
当程序运行时,突显或隐藏批处理程序中的正文。也可用以允许或取缔命令的回显。
在运作批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。
使用ECHO命令可关闭此作用。
语法
ECHO [ON|OFF]
若要用echo命令突显一条命令,可用下述语法:
echo [message]
参数
ON|OFF
点名是不是允许命令的回显。若要展现当前的ECHO的安装,可选择不带参数的ECHO
命令。
message

choice
使用此命令能够让用户输入一个字符,从而运行差距的命令。使用时应当加/c:参数,c:后应写提醒可输入的字符,之间无空格。它的重返码为1234……

goto begin  

指定让MS-DOS在屏幕上出示的正文。

CALL
从一个批处理程序中调用另一个批处理程序,而不会滋生首个批处理的暂停。
语法
CALL [drive:][path]filename [batch-parameters]
参数
[drive:][path]filename
点名要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩充名。
batch-parameters

如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?

 

点名批处理程序所需的命令行新闻。

PAUSE
暂停批处理程序的实践并展现一条音讯,提醒用户按任意键继续执行。只可以在批处
理程序中行使该命令。
语法
PAUSE
REM
在批处理公事或CONFIG.SYS中投入表明。也可用REM命令来遮掩命令(在CONFIG.SYS
中也可以用分号 ; 代替REM命令,但在批处理文件中则不可以代表)。
语法
REM [string]
参数
string

比如,test.bat的情节如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag 应先判断数值最高的错误码
if errorlevel 2 goto mem
if errotlevel 1 goto end

6.Call 命令

点名要屏蔽的授命或要含有的诠释。

例1:用edit编辑a.bat文件,输入下列内容后存盘为c:a.bat,执行该批处理文件后可已毕:将根目录中装有文件写入
a.txt中,启动UCDOS,进入WPS等成效。
  批处理文件的始末为:         命令注释:
    @echo off           不出示延续命令行及当前命令行
    dir c:*.* >a.txt       将c盘文件列表写入a.txt
    call c:ucdosucdos.bat    调用ucdos
    echo 你好            显示”你好”
    pause              暂停,等待按键继续
    rem 准备运行wps         注释:准备运行wps
    cd ucdos            进入ucdos目录
    wps               运行wps  
批处理文件的参数
批处理公事还足以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),那须要选择一个参数表示符”%”。
%[1-9]表示参数,参数是指在运行批处理文件时在文书名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令自己,其余参数字符串用%1到%9逐个表示。
例2:C:根目录下有一批处理公事名为f.bat,内容为:
@echo off
format %1
只要执行C:>f a:
那么在实施f.bat时,%1就意味着a:,那样format %1就一定于format
a:,于是上边的通令运行时实际履行的是format a:
例3:C:根目录下一批处理文件名为t.bat,内容为:
@echo off
type %1
type %2
那么运行C:>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面的授命将逐一地突显a.txt和b.txt文件的内容。
==== 注 ===============
参数在批处理中也当作变量处理, 所以同样运用百分号作为率领符,
其后跟0-9中的一个数字组成参数引用符. 引用符和参数之间 (例如上文中的 %1
与 a: ) 的涉嫌看似于变量指针与变量值的关系.
当大家要引用第十一个或更两个参数时, 就非得移动DOS 的参数初始指针. shift
命令正担任了这几个运动指针的角色, 它将参数的开局指针移动到下一个参数,
类似C 语言中的指针操作. 图示如下:
起来状态, cmd 为命令名, 可以用 %0 引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
透过1次shift后, cmd 将不可以被引述
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
经过2次shift后, arg1也被撤废, %9指向为空, 没有引用意义
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | |
%0 %1 %2 %3 %4 %5 %6 %7 %8
遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt
内核命令行环境下, shift 才支撑 /n 参数,

:defrag
c:\dos\defrag
goto end

从一个批处理程序调用另一个批处理程序,并且不停歇父批处理程序。call
命令接受用作调用目的的竹签。假诺在剧本或批处理公事外使用
Call,它将不会在命令行起成效。

可以以率先参数为原则返复移动先导指针.

特殊命令
if goto choice
for是批处理公事中比较高级的命令,假若那多少个你用得很内行,你就是批处理公事的大家啦。
一、if 是标准化语句,用来判定是还是不是符合规定的基准,从而决定推行差别的命令。
有三种格式:
1、if [not] “参数” == “字符串” 待执行的授命
参数即便等于(not表示不等,下同)指定的字符串,则条件建立,运行命令,否则运行下一句。

:mem
mem
goto end

语法

例:if “%1″==”a” format a:

if 的命令行协理中有关此点的描述为:
IF [NOT] string1==string2 command
在此有以下几点需求留意:

  1. 包罗字符串的双引号不是语法所必须的,
    而只是习惯上拔取的一种”防空”字符
  2. string1 未必是参数, 它也可以是环境变量,
    循环变量以及其余字符串常量或变量
  3. command 不是语法所必须的, string2

    后跟一个空格就足以组成一个卓有成效的一声令下行

    2、if [not] exist [路径]文本名 待执行的命令
    假使有指定的公文,则条件建立,运行命令,否则运行下一句。
    如: if exist c:config.sys type c:config.sys
    代表一旦存在c:config.sys文件,则体现它的始末。
    ****** 注 ********
    也得以行使以下的用法:
    if exist command
    device 是指DOS系统中已加载的装置, 在win98下一般有:
    AUX, PRN, CON, NUL
    COM1, COM2, COM3, COM4
    LPT1, LPT2, LPT3, LPT4
    XMSXXXX0, EMMXXXX0
    A: B: C: …,
    CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
    实际的始末会因硬软件条件的两样而略有差距, 使用这几个装备名称时,
    需要保险以下三点:

  4. 该装置确实存在(由软件虚拟的装置除外)
  5. 该设备驱动程序已加载(aux, prn等规范配备由系统缺省定义)
  6. 该设施已未雨绸缪好(首即使指a: b: …, com1…, lpt1…等)
    可由此命令 mem/d | find “device” /i 来检阅你的系统中所加载的配备
    其余, 在DOS系统中, 设备也被认为是一种独特的公文,
    而文件也足以称作字符设备;
    因为设备(device)与公事都是拔取句柄(handle)来管理的, 句柄就是名字,
    类似于文件名, 只但是句柄不是应用于磁盘管理, 而是应用于内存管理而已,

    所谓设备加载也即指在内存中为其分配可援引的句柄.

    3、if errorlevel <数字> 待执行的指令
    成百上千DOS程序在运作停止后会重回一个数字值用来表示程序运行的结果(或者状态),通过if
    errorlevel命令可以断定程序的重回值,根据差距的重临值来控制履行不一的通令(重回值必须遵循从大到小的顺序排列)。借使再次回到值等于指定的数字,则条件建立,运行命令,否则运行下一句。
    如if errorlevel 2 goto x2
    ==== 注 ===========
    重临值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法,
    当使用 set 作为执行命令时, 寻常会从小到晋朝序排列,
    比如需将重回码置入环境变量, 就需选拔以下的顺序格局:
    if errorlevel 1 set el=1
    if errorlevel 2 set el=2
    if errorlevel 3 set el=3
    if errorlevel 4 set el=4
    if errorlevel 5 set el=5

    自然, 也足以行使以下循环来顶替, 原理是同等的:
    for %%e in (1 2 3 4 5 6 7 8…) do if errorlevel %%e set el=%%e
    更火速简明的用法, 可以参见我写的另一篇关于获取 errorlevel 的篇章
    出现此种现象的原委是, if errorlevel 比较再次来到码的判断标准并非等于,
    而是大于等于. 由于 goto 的跳转特性,
    由小到大排序会招致在较小的回到码处就跳出; 而由于 set命令的 “重复”
    赋值特性, 由大到小排序会造成较小的回来码 “覆盖” 较大的回到码.
    除此以外, 固然 if errorlevel=<数字> command 也是实用的命令行, 但也只是

    command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了

    二、goto
    批处理公事运行到此处将跳到goto所指定的标注(标号即label,标号用:后跟正规字符串来定义)处,goto语句一般与if协作使用,依据不一致的基准来执行不一的命令组。
    如:
    goto end
    :end
    echo this is the end
    标明用”:字符串”来定义,标号所在行不被执行。
    ==== willsort 编注
    label 常被译为 “标签” , 但是这并不享有普遍的约定性.
    goto 与 : 联用可已毕执行中途的跳转, 再组成 if 可完结执行进程的准绳分支,
    多个 if 即可兑现命令的分组, 类似 C 中 switch case 结构照旧 Basic 中的
    select case 结构, 大规模且结构化的下令分组即可兑现高级语言中的函数效率.
    以下是批处理和C/Basic在语法结构上的自查自纠:
    Batch C / Basic
    goto&: goto&:
    goto&:&if if{}&else{} / if&elseif&endif
    goto&:&if… switch&case / select case

    goto&:&if&set&envar… function() / function(),sub()

    三、choice
    使用此命令可以让用户输入一个字符(用于选拔),从而根据用户的采用重临不一样的errorlevel,然后于if
    errorlevel同盟,根据用户的取舍运行区其余指令。
    只顾:choice命令为DOS或者Windows系统提供的外部命令,不一样版本的choice命令语法会稍有两样,请用choice
    /?查看用法。
    choice的指令语法(该语法为Windows
    2003中choice命令的语法,别的版本的choice的授命语法与此大理小异):
    CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M
    text]
    描述:
    该工具允许用户从选用列表选用一个种类并赶回所选项目标目录。
    参数列表:
    /C choices 指定要创建的选项列表。默许列表是 “YN”。
    /N 在提醒符中隐藏选项列表。提示后面的音讯得到突显,
    慎选依然处在启用情形。
    /CS 允许选用分大小写的选项。在默许景况下,那一个工具
    是不分大小写的。
    /T timeout 做出默许选项从前,暂停的秒数。可承受的值是从 0
    到 9999。假若指定了 0,就不会有抛锚,默认选项
    会拿走接纳。
    /D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选
    项指定的一组接纳中; 同时,必须用 /T 指定 nnnn。
    /M text 指定提醒以前要展现的信息。就算没有点名,工具只
    展现提示。
    /? 彰显支持音讯。
    注意:
    ERRORLEVEL 环境变量被装置为从拔取集采用的键索引。列出的首个选
    择重回 1,首个选项回到 2,等等。如若用户按的键不是有效的挑三拣四,
    该工具会生出警示响声。假使该工具检测到不当状态,它会回去 255 的
    ERRORLEVEL 值。如若用户按 Ctrl+Break 或 Ctrl+C 键,该工具会回来 0
    的 ERRORLEVEL 值。在一个批程序中选用 ERRORLEVEL 参数时,将参数降
    序排列。
    示例:
    CHOICE /?
    CHOICE /C YNC /M “确认请按 Y,否请按 N,或者吊销请按 C。”
    CHOICE /T 10 /C ync /CS /D y
    CHOICE /C ab /M “选项 1 请选择 a,选项 2 请选择 b。”
    CHOICE /C ab /N /M “选项 1 请选择 a,选项 2 请选择 b。”
    ==== willsort 编注 ===============================
    自己列出win98下choice的用法协理, 已资区分
    Waits for the user to choose one of a set of choices.
    等待用户接纳一组待选字符中的一个
    CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
    /C[:]choices Specifies allowable keys. Default is YN
    指定允许的按键(待选字符), 默认为YN
    /N Do not display choices and ? at end of prompt string.
    不显得提醒字符串中的问号和待选字符
    /S Treat choice keys as case sensitive.
    拍卖待选字符时高低写敏感
    /T[:]c,nn Default choice to c after nn seconds
    在 nn 秒后默许选项 c
    text Prompt string to display
    要显示的升迁字符串
    ERRORLEVEL is set to offset of key user presses in choices.
    ERRORLEVEL 被设置为用户键入的字符在待选字符中的偏移值
    借使本身运行命令:CHOICE /C YNC /M “确认请按 Y,否请按 N,或者吊销请按
    C。”
    屏幕上会呈现:
    确认请按 Y,否请按 N,或者撤回请按 C。 [Y,N,C]?
    例:test.bat的情节如下(注意,用if
    errorlevel判断再次来到值时,要按再次回到值从高到低排列):
    @echo off
    choice /C dme /M “defrag,mem,end”
    if errorlevel 3 goto end
    if errorlevel 2 goto mem
    if errorlevel 1 goto defrag
    :defrag
    c:dosdefrag
    goto end
    :mem
    mem
    goto end
    :end
    echo good bye
    此批处理运行后,将显示”defrag,mem,end[D,M,E]?” ,用户可选用d m e
    ,然后if语句根据用户的接纳作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最终皆以goto
    end将先后跳到end标号处,然后程序将呈现good bye,批处理运行截止。
    四、for 循环命令,只要条件适合,它将反复实施同一命令。
    语法:
    对一组文件中的每一个文书执行某个特定命令。
    FOR %%variable IN (set) DO command [command-parameters]
    %%variable 指定一个单纯字母可替换的参数。
    (set) 指定一个或一组文件。能够行使通配符。
    command 指定对每个文件进行的一声令下。
    command-parameters
    为一定命令指定参数或命令行开关。
    比如一个批处理公事中有一行:
    for %%c in (*.bat *.txt) do type %%c
    则该命令行会突显当前目录下所有以bat和txt为增添名的公文的始末。

    ==== willsort 编注

    亟需提出的是, 当()中的字符串并非单个或四个文本名时,
    它将独自被当作字符串替换, 那个特性再添加()中得以放手七个字符串的特征,
    很明确 for 可以被用作一种遍历型循环.
    本来, 在 nt/2000/xp/2003 种类的吩咐行环境中, for 被予以了更加多的性状,
    使之可以分析命令输出或者文件中的字符串,

    也有这么些开关被用于扩张了文件替换作用.

    批处理示例

  7. IF-EXIST
    1) 首先用记事本在C:建立一个test1.bat批拍卖公事,文件内容如下:
    @echo off
    IF EXIST AUTOEXEC.BAT TYPE AUTOEXEC.BAT
    IF NOT EXIST AUTOEXEC.BAT ECHO AUTOEXEC.BAT does not exist
    然后运行它:
    C:>TEST1.BAT
    设若C:存在AUTOEXEC.BAT文件,那么它的始末就会被出示出来,如果不设有,批处理就会唤醒您该文件不存在。
    2) 接着再建立一个test2.bat文书,内容如下:
    @ECHO OFF
    IF EXIST \%1 TYPE \%1
    IF NOT EXIST \%1 ECHO \%1 does not exist
    执行:
    C:>TEST2 AUTOEXEC.BAT
    该命令运行结果同上。
    说明:
    (1) IF EXIST 是用来测试文件是不是存在的,格式为
    IF EXIST [路径+文件名] 命令
    (2)
    test2.bat文件中的%1是参数,DOS允许传递9个批参数新闻给批处理文件,分别为%1~%9(%0代表test2命令自己)
    ,那有点象编程中的实参和形参的涉及,%1是形参,AUTOEXEC.BAT是实参。

    ==== willsort 编注

    DOS没有 “允许传递9个批参数音信” 的界定,
    参数的个数只会惨遭命令行长度和所调用命令处理能力的限制. 不过,
    我们在批处理程序中, 在平等时刻只可以同时引述10个参数, 因为 DOS只交付了

    %0~%9那十个参数引用符.

    3) 更进一步的,建立一个名为TEST3.BAT的公文,内容如下:
    @echo off
    IF “%1” == “A” ECHO XIAO
    IF “%2” == “B” ECHO TIAN
    IF “%3” == “C” ECHO XIN
    借使运行:
    C:>TEST3 A B C
    显示器上会展现:
    XIAO
    TIAN
    XIN
    假设运行:
    C:>TEST3 A B
    显示屏上会突显
    XIAO
    TIAN
    在这一个命令执行进程中,DOS会将一个空字符串指定给参数%3。
    2、IF-ERRORLEVEL
    树立TEST4.BAT,内容如下:
    @ECHO OFF
    XCOPY C:AUTOEXEC.BAT D:
    IF ERRORLEVEL 1 ECHO 文件拷贝败北
    IF ERRORLEVEL 0 ECHO 成功拷贝文件
    下一场实施文书:
    C:>TEST4
    如果文件拷贝成功,显示屏就会来得”成功拷贝文件”,否则就会显示”文件拷贝败北”。
    IF ERRORLEVEL
    是用来测试它的上一个DOS命令的再次回到值的,注意只是上一个发令的重返值,而且再次来到值必须依据从大到小程序顺序判断。
    故此上面的批处理公事是不对的:
    @ECHO OFF
    XCOPY C:AUTOEXEC.BAT D:
    IF ERRORLEVEL 0 ECHO 成功拷贝文件
    IF ERRORLEVEL 1 ECHO 未找到拷贝文件
    IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作
    IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作
    IF ERRORLEVEL 4 ECHO 拷贝进程中写盘错误
    不管拷贝是还是不是中标,前面的:
    未找到拷贝文件
    用户通过ctrl-c中止拷贝操作
    预置错误阻止文件拷贝操作
    拷贝进度中写盘错误
    都将显得出来。
    以下就是多少个常用命令的再次回到值及其代表的意思:
    backup
    0 备份成功
    1 未找到备份文件
    2 文件共享争论阻止备份达成
    3 用户用ctrl-c中止备份
    4 由于致命的一无所长使备份操作停顿
    diskcomp
    0 盘比较一致
    1 盘相比较不一样
    2 用户通过ctrl-c中止相比较操作
    3 由于致命的百无一是使比较操作停顿
    4 预置错误中止比较
    diskcopy
    0 盘拷贝操作成功
    1 非致命盘读/写错
    2 用户通过ctrl-c截至拷贝操作
    3 因致命的处理错误使盘拷贝中止
    4 预置错误阻止拷贝操作
    format
    0 格式化成功
    3 用户通过ctrl-c中止格式化处理
    4 因致命的处理错误使格式化中止
    5 在提示”proceed with format(y/n)?”下用户键入n甘休
    xcopy
    0 成功拷贝文件
    1 未找到拷贝文件
    2 用户通过ctrl-c中止拷贝操作
    4 预置错误阻止文件拷贝操作
    5 拷贝进程中写盘错误
    chkdsk
    0 未找到错误
    255 找到一个或四个谬误
    choice
    home88一必发,0 用户按下ctrl+c/break
    1 用户按下首先个键
    255 检测到命令行中的错误条件
    任何 用户按下的实用字符在列表中的地方
    defrag
    0 零星压缩成功
    1 出现其中错误
    2 磁盘上尚无空簇。要运行DEFRAG,至少要有一个空簇
    3 用户用Ctrl+C退出了DEFRAG
    4 出现经常错误
    5 DEFRAG在读簇时遇上错误
    6 DEFRAG在写簇时碰着错误
    7 分配空间有错
    8 内存错
    9 并未充足空间来减弱磁盘碎片
    deltree
    0 成功地删除一个目录
    diskcomp
    0 两盘如出一辙
    1 发现分裂
    2 按CTRL+C 终止了相比较
    3 出现严重错误
    4 出现初步化错误
    find
    0 查找成功且至少找到了一个卓殊的字符串
    1 查找成功但没找到匹配的字符串
    2 查找中冒出了错误
    keyb
    0 键盘定义文件装入成功
    1 使用了不法的键盘代码,字符集或语法
    2 键盘定义文件坏或未找到
    4 键盘、监视器通信时出错
    5 必要的字符集未准备好
    move
    0 成功地移动了指定的文书
    1 暴发了不当
    msav /N
    86 检查到了病毒
    replace
    0 REPLACE成功地更迭或插手了文件
    1 MS-DOS版本和REPLACE不兼容
    2 REPLACE找不到源文件
    3 REPLACE找不到源路径或目的路径
    5 不可以存取要替换的文件
    8 内存不够不可以履行REPLACE
    11 命令行句法错误
    restore
    0 RESTORE成功地苏醒了文本
    1 RESTORE找不到要回涨的公文
    3 用户按CTRL+C终止恢复生机进程
    4 RESTORE因错误而告一段落
    scandisk
    0 ScanDisk在它检查的驱动器上未检测到此外不当
    1 出于命令行的语法不对,不可能运作ScanDisk
    2 由于内存用尽或暴发内部错误,ScanDisk意外终止
    3 用户让ScanDisk中途退出
    4 进行盘面扫描时,用户决定提前退出
    254 ScanDisk找到磁盘故障并已总体改正
    255 ScanDisk找到磁盘故障,但未能全体订正
    setver
    0 SE电视ER成功地完结了职责
    1 用户指定了一个空头的一声令下开关
    2 用户指定了一个不法的文书名
    3 没有丰盛的种类内存来运行命令
    4 用户指定了一个野鸡的版本号格式
    5 SE电视ER在版本表中未找到指定的项
    6 SETVER未找到SETVER.EXE文件
    7 用户指定了一个野鸡的驱动器
    8 用户指定了太多的命令行参数
    9 SE电视ER检测到丢失了命令行参数
    10 在读SE电视ER.EXE文件时,SE电视机ER检测到发生错误
    11 SE电视ER.EXE文件损坏
    12 指定的SE电视ER.EXE文件不接济版本表
    13 版本表中没有丰盛的空间寄存新的项

    14 在写SE电视机ER.EXE文件时SE电视ER检测到发出错误

    3、IF STRING1 == STRING2
    树立TEST5.BAT,文件内容如下:
    @echo off
    IF “%1” == “A” FORMAT A:
    执行:
    C:>TEST5 A
    显示屏上就出现是不是将A:盘格式化的内容。
    留神:为了幸免参数为空的情状,一般会将字符串用双引号(或者其余符号,注意不可以拔取保留符号)括起来。
    如:if [%1]==[A] 或者 if %1*==A*
    5、GOTO
    建立TEST6.BAT,文件内容如下:
    @ECHO OFF
    IF EXIST C:AUTOEXEC.BAT GOTO _COPY
    GOTO _DONE
    :_COPY
    COPY C:AUTOEXEC.BAT D:
    :_DONE
    注意:
    (1) 标号前是ASCII字符的冒号”:”,冒号与标注之间无法有空格。
    (2) 标号的命名规则与公事名的命名规则平等。
    (3)
    DOS协助最长八位字符的标注,当不能区分三个标号时,将跳转至如今的一个标明。

    ==== willsort 编注

    1)标号也称作标签(label)
    2)标签无法以多数的非字母数字字符先导, 而文件名中则足以应用过多

    3)当不能区分八个标签时, 将跳转至地点最靠前的价签

    6、FOR
    确立C:TEST7.BAT,文件内容如下:
    @ECHO OFF
    FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C
    运行:
    C:>TEST7
    实践将来,屏幕上会将C:盘根目录下所有以BAT、TXT、SYS为增加名的公文内容显示出来(不包罗隐藏文件)。

  8. 为了求证截取变量中字符串的题材已经举过如下那些事例:
    @echo off
    set str=123456789
    echo 首个字符为:%str:~0,1%
    echo 头多个字符为:%str:~0,2%
    echo 头5个字符为:%str:~0,5%
    echo 去掉最后一个字符后的字符串为:%str:~0,-1%
    echo 去掉最终3个字符后的字符串为:%str:~0,-3%
    echo 第4个字符为:%str:~3,1%
    echo 第4个及其之后的3个字符为:%str:~3,4%
    echo 最终一个字符为:%str:~-1%
    echo 最终一个字符为:%str:~-1,1%
    echo 最终一个字符为:%str:~-1,2%
    echo 尾数第4个字符为:%str:~-4,1%
    echo 尾数第4个及其之后的字符为:%str:~-4%
    echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
    echo 尾数第4个及其之后的2个字符为:%str:~-4,3%
    pause
    为了求证那几个难点,我在那边把批处理取字符,做下愈加的演说,希望对新手有所启发
    如下:
    echo %var:~n,k%
    俺们在那里对各种参数做个验证:”%var”,即大家要从中要截取字符的字符串.”
    ~ “取字
    符标志符(我是如此了解的),”n”
    我们将其通晓为指针,”k”大家将其了然为偏移地址.(注
    :指针和偏移地址都是从零从头数的)
    我们依然用namejm版主的事例做下表明:
    @echo off
    set str=123456789
    rem 定义一个str字符串为123456789
    echo 第四个字符为:%str:~0,1%
    rem 指针为0,偏移地址为1,即从第0位发轫,取1位
    echo 头三个字符为:%str:~0,2%
    rem 指针为0,偏移地址为2,即从第0位起首,取2位
    echo 头5个字符为:%str:~0,5%
    rem   指针为0,偏移地址为5,即从第0位开头,取5位
    echo 去掉最终一个字符后的字符串为:%str:~0,-1%
    rem
    当”k”为负值时,大家可以这么敞亮:从指针初始处初步取其前面所有字符,然后减去
    末端”abs(k)位”..所以那些句字大家得以做如下解释:从第0位早先取其全体字符
    为:123456789然后从背后减去abs(k)位,所以最终结果为:12345678
    echo 去掉最终3个字符后的字符串为:%str:~0,-3%
    rem   该句解释同上↑
    echo 最终一个字符为:%str:~-1%
    rem  
    参数”n,”和”k”都得以为缺省,缺省”n,”时方可了解为:从abs(k)位开端取其总体
    echo 倒数第4个及其之后的字符为:%str:~-4%
    rem 解释同上↑
    echo 最终一个字符为:%str:~-1,1%
    rem   n为负值时,表示从后边开头截取字符,取k位(此时n应从1上马数)
    echo 最终一个字符为:%str:~-1,2%
    rem   解释同上↑
    echo 尾数第4个字符为:%str:~-4,1%
    rem   解释同上↑
    echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
    rem   解释同上↑
    echo 尾数第4个及其之后的2个字符为:%str:~-4,3%
    rem 解释同上↑
    pause

:end
echo good bye

call [Drive:][Path] FileName [BatchParameters] [:label
[arguments]

此文件运行后,将展现 defrag,mem,end[D,M,E]? 用户可采取d m e
,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最终都以goto
end将先后跳到end标号处,然后程序将彰显good bye,文件为止。

参数

for 循环命令,只要条件适合,它将反复实施同一命令。

[Drive:}[Path] FileName

格式FOR [%%f] in (集合) DO [命令]
若果参数f在指定的成团内,则条件建立,执行命令

点名要调用的批处理程序的地点和称号。filename 参数必须拥有 .bat 或 .cmd
增加名。

假诺一条批处理文件中有一行:
for %%c in (*.bat *.txt) do type %%c
意思是只即使以bat或txt结尾的公文,则突显文件的内容。

 

应用批处理文件

7.start 命令

——autoexec.bat

调用外部程序,所有的DOS命令和下令行程序都足以由start命令来调用。

DOS在启动会自动运行autoexec.bat那条文件,一般大家在里面装载每回必用的主次,如:
path(设置路径)、smartdrv(磁盘加快)、 mouse(鼠标启动)、mscdex(光驱连接)、
doskey(键盘管理)、set(设置环境变量)等。

侵袭常用参数:

如果开行盘根目录中绝非这些文件,电脑会让用户输入日期和时间。

MIN 开首时窗口最小化

譬如说,一个独立的autoexec.bat内容如下:

SEPARATE 在分手的空间内伊始 16 位 Windows 程序

@echo off 不出示命令行

HIGH 在 HIGH 优先级档次先河应用程序

prompt $p$g 设置提醒符前有目录提醒

REALTIME 在 REALTIME 优先级档次初始应用程序

path c:\dos;c:\;c:\windows;c:\ucdos;c:\tools 设置路径

WAIT 启动应用程序并等待它停止

lh c:\dos\doskey.com 加载键盘管理

parameters 这一个为传送到命令/程序的参数

lh c:\mouse\mouse.com 加载鼠标管理

举办的应用程序是 32-位 GUI 应用程序时,CMD.EXE
不等应用程序终止就赶回命令提醒。要是在指令脚本内推行,该新作为则不会爆发。

lh c:\dos\smartdrv.exe 加载磁盘加快管理

 

lh c:\dos\mscdex /S /D:MSCD000 /M:12 /V 加载CD-ROM驱动

8.choice 命令

set temp=c:\temp 设置临时目录

choice
使用此命令可以让用户输入一个字符,从而运行差距的授命。使用时应有加/c:参数,c:后应写提示可输入的字符,之间无空格。它的重返码为1234……

如: choice /c:dme defrag,mem,end

将显示

defrag,mem,end[D,M,E]?

Sample:

萨姆ple.bat的内容如下:

@echo off

choice /c:dme defrag,mem,end

if errorlevel 3 goto defrag (应先判断数值最高的错误码)

if errorlevel 2 goto mem

if errotlevel 1 goto end

 

:defrag

c:dosdefrag

goto end

:mem

mem

goto end

:end

echo good bye

 

此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可挑选d m e
,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最终都以goto end将先后跳到end标号处,然后程序将突显good bye,文件为止。

  1. %x 参数

%1 — 第1个参数

%2 — 第2个参数

%3 — 第3个参数

….

net use \\%1\ipc$ %3 /u:”%2″

%1 — IP

%2 — username

%3 — password

 

bat(批处理)基础语法 1. @
行首有了它的话,这一行的命令就不出示了。 2. echo 2.1 echo [{on|off}]
[message] 输出,回显。 2.2 on | off 它其实…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图