批处理命令解析

本文详细介绍批处理命令的应用,包括常用命令如echo、cmd、pause等的功能与使用方法,以及环境变量、重定向、条件判断、循环操作等高级技巧。此外还介绍了如何使用批处理进行文件操作、启动程序和处理文本数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

批处理教程电子书

1.echo

1.1 echo [on][off]

控制批处理命令在执行时是否显示
不能控制运行结果是否显示
如果不显示命令echo off,则需要在该命令行前加上”@”
@:加在命令行前面,表示运行时不显示命令行本身

1.2 echo

显示当前的回显设置

1.3. echo string \\不需要双引号

输出string

1.4 关闭路径提示字符串

在DOS提示符状态下键入ECHO OFF,能够关闭DOS提示符的显示使屏幕只留下光标,直至键入ECHO ON,提示符才会重新出现.

1.5 echo.

输出空行

1.6 echo string >a.txt

将文本写入文件

2. cmd

启动新的cmd窗口

2.1 cmd/c

执行完批处理后关闭窗口

2.2 cmd/k

执行完批处理不关闭窗口

2.3 cmd.>name.txt

新建空白文件

3. PAUSE

暂停
让使用者看清楚程序信息
显示错误的汇编代码信息

4. 几类重定向

4.1 标准错误重定向输出

[command] 2>out.txt

4.2 标准输出重定向输出

[command] 1>out.txt

4.3 标准重定向输出

[command] 1>out.txt 2>&1

5. 常用环境变量

环境变量说明结果
%CD%列出当前目录F:\
%CMDCMDLINE%启动当前cmd所使用的命令行cmd /c F:\blog.bat
%COMPUTERNAME%列出计算机名LED-PC
%DATE%列出当前日期2016-07-12 周二
%ERRORLEVEL%列出了最近使用的命令的错误代码0
%HOMEDRIVE%列出用户主目录驱动C:
%OS%列出系统的名字Windows_NT
%PROCESSOR_ARCHITECTURE%列出处理器的芯片架构AMD64
%PROCESSOR_IDENTIFIER%列出处理器的描述Intel64 Family 6 Model 69 Stepping 1, GenuineIntel
%NUMBER_OF_PROCESSORS%列出处理器的个数4
%RANDOM%随机一个0-32767的数27194
%TIME%列出当前时间16:21:55.34
%WINDIR%列出操作系统目录位置C:\Windows
%ALLUSERSPROFILE%列出用户配置文件C:\ProgramData

6. copy

/y

不使用确认是否要覆盖现有目标文件的提示

/-y

使用确认是否要覆盖现有目标文件的提示

注:没有后缀名则默认是目录

7. xcopy

/s 默认

复制目录,但不复制空目录

/e

复制目录,包括空目录

/t

复制目录结构但不复制文件,不包括子目录和空目录

/i

如果目标不存在,且要复制多个文件,则假定目标必须是目录

  • xcopy /i/t/e

创建包含子目录和空目录的目录结构

  • xcopy /i/e dir1 dir2

将目录dir1下的所有文件和文件夹复制到dir2

8. set

set var=c:\

声明变量内容为”=”后的字符串
copy c:\test.txt c:\%var%.txt

set /a var=8*4

声明”=”右边的字符串为数字表达式

set /p a=<c:\test.txt

重定向输入

set /p a=请输入一个数字:

赋值来源键盘

9. start

调用外部程序

start /d d:\ /max /wait

  • /d d:\ 启动path为d:\的cmd
  • /max 开始时窗口最大化
  • /min 开始时窗口最小化
  • /wait 启动应用并等待终止

start d:\

启动目录为d:\的窗口

10. choice

choice 使用此命令可以让用户输入一个字符,从而运行不同的命令,返回值分别为1234…

choice /c:abc /m aaa,bbb,ccc /t 10 /d b
rem errorlevel 判断从高到低,同时跳转内部要写end
if errorlevel 3 goto ccc
if errorlevel 2 goto bbb
if errorlevel 1 goto aaa
:aaa 
echo aaa
goto end
:bbb 
echo bbb
goto end
:ccc 
echo ccc
goto end
:end
blog.bat

/c

选项列表

/m

选项提示信息

/t

默认选择之前的暂停时间

/d

/t秒后的默认选项

11. if

11.1 输入判断

  • 格式一(else后面需要空格)
    else 和if的尾端要在同一行上
if "%1"=="1" (
goto x
) else ( 
goto end
)
:x
echo 12
:end
pause
  • 格式二
    其中goto x需要用新的一行终止
if "%1"=="1" (goto x) else goto end
:x
echo 12
:end
pause

11.2 文件存在判断

否定:if not exist

if exist F:\self\Blog\testbat\*.gif del F:\self\Blog\testbat\*.gif 

11.3 程序最后返回值判断

如果最后运行的程序返回一个等于或大于指定数字的退出代码,指定条件为 true。

if errorlevel 1 goto first

数值越高表示错误越严重,所以通常处理时由高到低
返回值为零时代表命令执行成功

11.4 自定义比较

符号名含义
EQU等于
NEQ不等于
LSS小于
LEQ小于或等于
GTR大于
GEQ大于或等于
ERRORLEVEL

此处应该为%ERRORLEVEL%

IF %ERRORLEVEL% LEQ 1 goto okay
字符串比较
if str1 leq %1 goto other

12. dir

/a

显示具有指定属性的文件

  • d 目录
  • r 只读文件
  • h 隐藏文件
  • s 系统文件
  • - 表示”否”前缀

/b

使用空格式,没有标题信息或者摘要

/l

用小写

/s

显示指定目录和子目录下的所有文件

13. for

in中的元素的分隔符 :空格键、跳格键、逗号、分号或等号分隔
函数体%%i用逗号、/、空格键
分隔符集中的字符之间不需要分隔符
for语句以行为单位
变量名区分大小写

13.1 基本使用

echo 显示计算机磁盘盘符
set str=c d e f g h i j k l m n o p q r s t u v w x y z
for %%i in (%str%) do if exist %%i: echo %%i:   

echo 当前目录下的所有文件
for %%i in (*.*) do echo %%i 

echo 当前目录下的所有目录,且目录路径存于set中 
for /d  %%i in (*) do echo %%i

echo 当前目录下的递归目录树
for /r /d %%i in (*) do echo %%i

echo 当前目录下的递归目录树
for /r /d %%i in (.) do echo %%i

echo当前目录及其下的所有子目录的所有exe文件
for /r  %%i in (*.exe) do echo %%i

echo 增量形式从开始到结束的一个数字序列
for /l %%i in (5,-1,3) do echo %%i

13.2 for /f

for /f "eol=. delims=; tokens=1-4,* skip=1 " %%i in ("test1.txt") do echo %%i,%%j,%%k
skip

skip=n:跳过n行,解析n+1行,in中的每个文件都跳过n行

eol

忽略以”.”开始的行;如果不指定eol默认忽略以”;”开始的行(注:eol=;这种默认设置,在delims=;时变得无效)

tokens
  • 默认值为空格或者跳格键
  • 格式一:1-4表示1,2,3,4;
  • 格式二:1,2,表示字符串从左往右被切分成紧跟在之前的数值所表示的节数之后,剩余整体被*所表示的一个变量接收
  • %%i和%%j和%%k由tokens隐式声明,第一个%%i由指定的形式变量决定
  • 最大值不能超过26,而且不要试图声明一个高于字母”z”,或者”Z”的变量
  • 默认值为1
usebackq
FOR /F "usebackq delims==" %%i IN (`set`) DO @echo %%i

set为dos命令,上述例子显示环境变量

13.3 变量扩展

命令作用执行结果
%~I删除任何引号(“),扩展 %IF:\self\Blog\testbat\blog.bat
%~fI将 %I 扩展到一个完全合格的路径名F:\self\Blog\testbat\blog.bat
%~dI仅将 %I 扩展到一个驱动器号F:
%~pI仅将 %I 扩展到一个路径\self\Blog\testbat\
%~nI仅将 %I 扩展到一个文件名blog
%~xI仅将 %I 扩展到一个文件扩展名.bat
%~sI扩展的路径只含有短名F:\self\Blog\testbat\blog.bat
%~aI将 %I 扩展到文件的文件属性–a——
%~tI将 %I 扩展到文件的日期/时间2016-07-13 17:08
%~zI将 %I 扩展到文件的大小127

14. 延迟扩展变量

  • for语句中延迟变量扩展
    取变量时需要使用!var!
setlocal enabledelayedexpansion
set num=0
for /f %%i in ('dir /a-d /b') do (
    set /a num+=1
    echo the values of num is !num!
    )
  • 简单延迟变量扩展
    set num=3&&call echo %num%

15. find

type a.txt|find "string"

如果没有指定路径,find将搜索键入的或者由另一个命令产生的文字
FIND [/V] [/C] [/N] [/I] “string” [[drive:][path]filename[ …]]
注:上述string双引号是必须的

/v

显示所有未包含指定字符串的行

/c

显示包含字符串的行数

/n

显示行号

/i

搜索时忽略大小写

16. 预处理机制

预处理含义:将一条完整的语句读入内存,语法有误则给出错误提示或者退出批处理环境;无误则在语句读入内存之前将被引用的变量以及百分号对替换为变量的值

  • 一条完整的语句
    这里写图片描述
  • 变量的替换先于特殊符号的处理
    这里写图片描述

17. 组合命令

命令作用
&顺序执行而不管是否有命令执行失败
&&顺序执行,自动判断,当命令出错时不再执行后续命令
||执行多条命令,遇到一个执行正确的命令就退出


&和&&优先级高于||

18. 管道命令

命令作用
|前一命令的输出当做后一命令的输入
>输出重定向,清空原文件
>>输出重定向,追加到原文件
>&将一个句柄的输出写入到另一个句柄的输入
<输入重定向

19. 特殊符号

命令作用
^特殊符号的前导符号
,和空格一样的缺省分隔符号
()包含命令


演示:

这里写图片描述

dir c:\ && dir d:\ > a.txt
rem a.txt中只保存了D盘的文件目录
(dir c:\&&dir d:\)>a.txt
rem a.txt中保存了C盘和D盘的文件目录

20. 时间日期

命令作用
time显示当前时间设置和输入新时间的提示
time \t显示当前时间
date显示当前时间设置和输入新时间的提示
date \t显示当前日期

21. 循环批处理

@echo off
if exist C:\Users\LED\Desktop\testbat\*.gif del C:\Users\LED\Desktop\testbat\*.gif
a.bat

22. attrib

attrib +s+h+r path

+ 设置属性
- 清除属性

r

只读属性,即写保护

a

存档属性
存档属性是用来标记文件改动的.即在上一次备份后文件有所改动.一些备份软件在备份的时候会只去备份带有存档属性的文件.

s

系统属性,标明文件为系统调用


注意:r属性必须和a和s属性一同使用

/s

处理当前文件夹及子文件夹中匹配文件(默认当前文件夹)

23. task

根据线程ID找到线程详细信息

tasklist|findstr "2720"
tasklist /fi "PID eq 2720"

其他筛选器参数
这里写图片描述

根据线程ID终止线程

taskkill /PID 7380 /F /T
/F

强制终止进程

/T

终止指定的进程和由它启用的子进程

24. 空设备nul

command 1>null 2>&1

25. netstat

@echo off
netstat -a -n -o> a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt 
pause

-a

显示所有连接和侦听端口

-n

以数字形式显示地址和端口号

-o

显示于每个链接关联的进程ID

26. 跳转

goto label
:label

27. 调用其他批处理

call newname.bat 0
newname.bat中%1用0替代

28. 批处理长文件名表示格式

当文件名过长时,采用8个字符缩写,即写头六个字母(略去空白),另加波浪号和1,如果有重复的则递增

例子:
Tempor~1

29. 注册安装

regsvr32

/s 指定regsvr2安静运行

msi

*.msi /qn 静默安装
*.msi /qb 显示基本流程

30. 注释

rem

rem echo 注释

::

:: echo 注释

31. 批处理参数的使用

%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示
批处理必须使用两个百分号,其中一个会被过略掉

32. 其他命令

cls

清空屏幕

help | more

前一命令的输出当做后一命令的输入,分页显示帮助

33. 注解

  • bat是16位的dos cmd 是32位的dos
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值