DOS编程基础总结

一、概念

1.1 DOS命令—windows支持的命令行指令

DOS:Disk Operating System 是早期微软的操作系统命令行界面,用于控制计算机执行任务命令,是在系统启动时加载的操作系统。Windows是在DOS基础上发展而来的,引入了更多图形化界面和功能,但同时DOS命令仍然在windows得以支持。

1.2 BAT脚本—DOS批处理脚本

.bat或者.cmd为结尾的文件,即DOS批处理脚本文件。运行在windows命令行环境。将一系DOS列命令按一定顺序集合。

1.3 DOS命令帮助—help / help command

在命令行直接输入help可以查看DOS本身支持的命令,如果用help command可以获得command命令的详细帮助;

二、基础语法

以下只讲解基础用法,很多命令存在复杂的扩展指令用法,可以用help command详细查看

2.1 变量(读/写/查看/关键环境变量)

新增&&改写变量 SET [variable=[string]]
显示当前全部变量SET(不带参数)
使用变量%variable%,如打印当前时间echo %DATE%

set testVar=hahaha
echo %testVar%
 :: 输出hahaha
echo %DATE%
 :: 输出如2023/11/13 周一

常用变量如 DATE日期,TIME时间,CD当前目录,ERRORLEVEL函数返回值

2.2 if条件语句

IF [NOT] 表达式 number command [ELSE command]
常用表达式举例:
1)ERRORLEVEL number // 最后运行的程序返回值 等于或者大于指定number
2)EXIST filename // 指定文件存在
3)条件比较表达式 string1 cmp-op string2,
—cmp-op可选:EQU等于 NEQ不等 LSS小于 LEQ小于等于 GTR大于 GEQ大于等于

set aVar=123
set bVar=124
if %aVar% LSS %bVar% (
   echo %aVar% less than %bVar%
) else (
   echo %aVar% bigger nor equal to %bVar%
)
:: 输出123 less than 124

2.3 for循环语句

FOR %variable IN (set) DO command [command-parameters]
注意:在批处理命令中使用for命令 注意变量请使用%%variable,并区分大小写;

for %%i in (1 2 3 4 5) do echo %%i
:: 输出 1(换行) 2(换行) 3 (换行)4 (换行)5(换行)

for存在大量扩展用法,详见help for
包括/L迭代器控制(指定起始 步长 结束),/D目录匹配(非递归子目录),/R 目录文件匹配(递归), /F 读取文件内容逐行操作匹配

2.4 注释— 行首:: 或者 行首REM(可回显内容)

有两种注释方式:1)行首加 ::,本行将被注释并且内容不会回显;2)行首加REM,本行将被注释,并且内容执行会回显示出来。

:: 这是一样注释,执行脚本时,不被打印出来。
REM this is a comand no use line, it will print to command windows

三、DOS基础指令

3.1 输出命令 与 指令回显控制echo

ECHO [message] // 输出字符串
ECHO [ON | OFF] // 打开或关闭回显(脚本执行默认命令回显是打开,即每条指令执行前都会显示到命令行界面 )

3.2 工作流程相关 pause暂停 / goto跳转 / exit 结束

PAUSE // 暂停批处理执行程序,并在屏幕上显示 请按任意键继续. . .
GOTO label // 跳转命令,批处理文件中 可以用:xxx 来创建一个标签,然后用goto跳转过去;

goto end
:end
	echo this is the end
:: 输出this is the end

EXIT [/B] [exitCode] // 退出此bat文件,返回exitCode,默认关闭DOS窗口,如果带了/B就不关闭窗口

3.3 调佣其他批处理命令call(本窗口执行)/ start (新开窗口执行)

CALL [drive:][path]filename [batch-parameters] // 在本窗口调用新批处理文件处理,带入参数batch-parameters
START [drive:][path]filename [batch-parameters] // 创建一个新窗口处理

3.4 日期命令date 时间命令time 与 延时手段

DATE /t // 显示当前日期,直接输入DATE是进行日期设置
TIME /t // 显示当前时间
DOS命令中没有类似shell的sleep命令,可以用ping命令实现类似sleep的效果(如下 ping默认每秒一个数据包,6个数据包就是5秒)
ping -n 6 127.0.0.1 >nul

3.5 历史输入命令查看 doskey /history (类似shell的history),命令位置查看where

doskey /history 可以直接查看历史命令;
where 命令/文件 // 在PATH或者当前目录查找

3.6 【高阶用法】多个命令组合使用 &、&&、||,与pipe管道符|

多个命令组合:
cmd1 & cmd2 [& cmd3 … ] // 顺序执行各条命令
cmd1 && cmd2 [&& cmd3 … ] // 顺序执行各条命令,如果前一个命令失败,后续命令不执行
cmd1 || cmd2 [ || cmd3 … ] // 顺序执行各条命令,如果前一个命令失败,才执行后续命令
管道命令:
cmd1 | cmd2 [ | cmd3 … ] // 前一条命令的输出结果 作为下一条命令输入参数,与shell命令类似

四、文件相关

4.1 文件 创建(利用type和重定向>)/ 删除del / 移动move / 改名ren / 复制copy

DOS中没有shell中类似touch命令串口文件,可以利用type和重定向>创建一个新空文件。

type nul >./tmp.txt
:: type命令显示nul(特殊设备 用于丢弃输入输出)导入到创建的tmp.txt中。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names // 删除文件
MOVE [/Y | /-Y] [drive:][path]filename1[,…] destination // 移动文件
REN [drive:][path]filename1 filename2 // 重命名
COPY source destination // 复制文件

4.2 文件 列表dir(类似shell的ls)/ 属性查看与修改CACLS

DIR [drive:][path][filename] // 查看文件
CACLS filename // 修改权限等

4.3 文件内容查看type

TYPE [drive:][path]filename // 显示文本内容

4.4 文件与重定向<、>和>>(和shell用法类似)

输出重定向> (若文件不存在就创建一个)
追加内容 >> (内容补充到文件末尾)
输入重定向< ,从文件中读取命令作为参数输入给命令
将一个句柄输出写入到另一个句柄输入中 >&
将一个句柄输入读取到另一个句柄输出 <&

4.5 目录相关 创建md / 删除rd / 切换cd / 输出子目录tree

MD [drive:][path] // 建立文件夹
RD [drive:][path] // 删除文件夹
CD [drive:][path] // 切换当前目录到制定文件夹
TREE [drive:][path] [/F] [/A] // 输入子目录

五、文本&字符串相关

5.1 ^转义字符(屏蔽特殊符号<、>、&功能)

对于特殊符号<、>、&,可以前面添加^来把它们作为普通符号使用

5.2 文本内容搜索find

FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[ …]] // 在文件中搜索字符串string

5.3 文本替换 与 截取

字符替换:%PATH:str1=str2%,将PATH变量中str1替换为str2.
字符截取:%VAR:~[m [, n] ] %,截取VAR指定偏移内容,m为起始偏移 缺省为0,n为长度 缺省为偏移开始的全部内容长度;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值