常识:批处理程序

  • CMD:Command Prompt(命令输入框)。
  • PowerShell:一种易于使用的命令行 shell 和脚本环境。
  • CMD是PowerShell的子集。
  • DOS(Disk Operating System)是在 DOS 操作系统或 Windows 系统的命令提示符(CMD)中使用的命令。

1.DOS命令介绍

1.1 命令写法

  • 命令不区分大小写
  • 按上下键可以查看历史命令
  • Tab键可以自动补全
  • 使用/?/help可以查看命令用法,用法中的[]代表可选
  • 命令基本格式 命令 参数列表 主命令 子命令 参数 操作 选项

1.2 基本命令

命令 功能 举例
echo 显示 echo a 将在屏幕上显示a的值
pause 暂停 pause 需要按任意键才能往下执行 pause > null 将暂停下来,并把文件输入到null中
cls 清屏
exit 退出

1.3 DOS常用命令

命令 功能 举例
type 显示文件内容 type 1.txt
find 查找字符串 find "abc" 2.txt
fc 比较文件内容 fc 1.txt 2.txt
date 显示/修改日期 date /T 只显示日期
time 显示/修改时间 time /T 只显示时间
ping 网络连接测试 ping www.baidu.com
ipconfig TCP/IP信息
set /a 计算表达式 set /a 6%4
shutdown 关机 shutdown /s /t 60 shutdown /A 终止命令
netstat 显示协议统计信息和当前 TCP/IP 网络连接 netstat -a -n 以数字化的形式显示出全部的网络连接
net user 操作用户信息 net user baby 123 /add 添加用户为baby,密码为123的账户
tasklist 任务列表查看 tasklist 查看任务进程
taskkill 任务关闭 taskkill ID (PID)taskill 映像名称

备注:

  • 同时输入date /T time /T cmd命令窗口将输出 日期 时间。

  • chcp 65001即可临时修改当前命令行窗口的编码方式为"UTF-8",也可以在"计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor"中新建一个字符创值autorun,其值域为chcp 65001每次进入CMD命令窗口系统都将自动执行该命令。

  • color命令,给cmd命令窗口设置颜色。

  • title命令,给cmd命令窗口设置标题。

1.4 DOS命令运算符

  • 多命令
bash 复制代码
&  顺序执行多条命令,不管命令是否执行成功
&& 顺序执行多条命令,前面的命令错误则不执行后面的命令
|| 顺序执行多条命令,碰到执行正确的命令后将不执行后面的命令

abc & dir & bcd
abc && dir && bcd
abc || dir || bcd
  • 重定向
bash 复制代码
>  输出重定向
>> 追加重定向
<  输入重定向

date /t > 1.txt
time /t >> 1.txt
find "/" < 1.txt
  • 管道
bash 复制代码
| 前一个命令的输出作为后一个命令的输入

dir | find "txt"

1.5 文件操作命令

路径分隔符\

当前目录.

上一级目录..

命令 功能 举例
dir 显示文件夹内容 dir /A
tree 显示文件夹树形结构 tree /F
盘符: 进入指定磁盘 c: d:
cd 切换目录 cd test cd ..
mkdirmd 创建目录 mkdir test
rmdirrd 删除目录 rmdir test
del 删除文件 del 1.txt del /q/a/f *.txt
renameren 重命名 rename a.txt b.txt
copy 复制文件 copy a\1.txt b\1.txt
move 移动文件/重命名 move a\1.txt 2.txt

2.批处理程序基本语法

将DOS命令写在一个名为.bat的文件,这个文件就是批处理文件,且这个批处理文件可以被执行。

2.1 基本结构

建立一个.txt文本文件中输入以下代码:

bash 复制代码
@echo off		# 关闭回显
......
pause			# 暂停。或 pause > nul

再把文件名修改为.bat

2.2 运行方式

  • 双击运行
  • cmd中运行(可以传参)

2.3 编写注释

REM 注释内容

2.4 使用变量

bash 复制代码
# 设置变量
set 变量名=变量值
set /a 变量名=表达式       #将表达式的值进行计算赋值给变量

# 取消变量
set 变量名=

# 打印变量
set 变量名       #将出现 变量名=值 的形式
echo %变量名%    #将直接打印变量的值

# 列出变量
set

# 引用变量
%变量名%

# 输入变量值
set /p 变量名=提示文字

2.5 使用预定义的变量

变量名
%cd% 当前目录
%date% 当前日期
%time% 当前时间
%random% 0~32767之间的随机数
%path% 环境变量
%errorlevel% 上一个命令的返回值,0表示执行成功
%0%1%2...... 参数。%0表示命令名

3.调用参数

bash 复制代码
call 可执行文件 [参数列表]

4.条件语句

bash 复制代码
if [not] 条件 (                    #本行左括号不能换行,否则会将所在行视为一条语句
	语句块
) else (                           #b本行左括号必须跟右括号保持在同一行 
	语句块
)

# 条件:
errorlevel number	# 上一个程序的返回值大于等于number则为true
string1==string2	# 两个字符串匹配则为true
exist filename		# 文件名存在则为true
[/I] string1 compare-op string2		# 比较数值或字符串
	# /I	忽略大小写
	# compare-op包括:
	#	equ	等于
	# 	neq	不等于
	#	lss	小于
	#	leq	小于等于
	#	gtr	大于
	#	geq	大于等于
defined variable	# 如果定义了该变量则为true

5.跳转语句

bash 复制代码
goto label		# 跳转到标签所在行
:label			# 标签以冒号开头

6.循环语句

基本语法

bash 复制代码
for %%i in (set) do (
	语句块
)

# 循环变量用 %% 指定,只能是单字母
# set表示文件集合(也可以是空文件),元素之间以逗号或空格分隔,支持通配符

for %%i in (a,b,c) do (echo %%i)
for %%i in (*.*) do (echo %%i)

扩展语法

  • 只遍历文件夹

    bash 复制代码
    for /d %%i in (set) do
  • 遍历指定文件夹下的所有文件,不指定则表示当前目录。如果set为.表示枚举目录树

    bash 复制代码
    for /r [[drive:]path] %%i in (set) do
    
    for /r %%i in (*) do (echo %%i)
    for /r d:\up %%i in (.) do (echo %%i)
  • 遍历数字序列

    bash 复制代码
    for /l %%i in (start,step,end) do
  • 遍历文件内容

    bash 复制代码
    for /f ["options"] %%i in (set) do

7.使用通配符

bash 复制代码
?		# 单个字符
*		# 任意字符

8.批处理程序例子

按顺序为文件夹中的文件命名。

批处理中for循环的自增自减问题_Dandelion_gong的博客-CSDN博客_bat for 自增

bash 复制代码
@echo off
setlocal enabledelayedexpansion    # 自增处理
set cnt=0
for %%i in (%1) do (
    rename %%i !cnt!.txt           #!!表示注意要进行变化
    set /a cnt=!cnt! + 1
)
pause
相关推荐
阿杆3 小时前
接了个友情活,收获一台生产力工具,分享我接私活的一些经验
后端·程序员·敏捷开发
SimonKing3 小时前
Java集合操作:Apache Commons Collections4启示录
java·后端·程序员
小凡敲代码13 小时前
2025年金九银十Java面试场景题大全:高频考点+深度解析+实战方案
java·程序员·java面试·后端开发·求职面试·java场景题·金九银十
一只叫煤球的猫13 小时前
让版本控制变简单:Jujutsu (jj、git威力加强版) 使用手册
git·程序员·命令行
袁煦丞18 小时前
SimpleMindMap私有部署团队脑力风暴:cpolar内网穿透实验室第401个成功挑战
前端·程序员·远程工作
秋难降20 小时前
聊聊 “摸鱼式” 遍历 —— 受控遍历的小心机
数据结构·算法·程序员
黑土豆20 小时前
那些藏在云边小卖部里的温暖与遗憾
程序员
Java中文社群21 小时前
超简单!手把手教你玩转ClaudeCode,无魔法不会员!
人工智能·程序员
AI大模型21 小时前
如何成为一名成功的AI产品经理:从传统产品到AI产品的转型之路
程序员·llm·agent
AI大模型21 小时前
提示工程已死?恰恰相反,这5个高阶玩法才是拉开差距的关键
程序员·llm·agent