批处理【bat、cmd】知识 及 常用批处理
DOS命令
一、常用DOS命令:
https://blog.csdn.net/qq_38676810/article/details/79584531 或 https://www.jb51.net/article/140920.htm 或 https://www.w3cschool.cn/dosmlxxsc1/(W3C文档)
d:+回车键——进行盘符切换 dir(directory): 列出当前目录下的文件以及文件夹【dir /s 所有目录】 cd(change directory): 改变指定目录(进入指定目录)【cd.. 退回到上一级目录; cd\ 退回到根目录】 md(make directory): 创建目录 rd(remove directory): 删除目录(只能是空目录) copy: 拷贝一个或多个文件到指定盘上 robocopy:目录复制命令(快速复制) https://blog.csdn.net/wkl1237/article/details/52448731 del(delete): 删除文件 exit: 退出dos命令行 cls(clear screen): 清屏 ren: 重命名 tree: 显示文件目录树,含最底层目录 date: 查看日期 time: 查看时间 regedit: 注册表编辑器 mode: 设置DOS窗口的尺寸
二、语法
- > 把命令返回的数据 写到一个文件中
- cmd命令不区分大小写
- 查看命令帮助提示:https://blog.csdn.net/weixin_55000908/article/details/123455634
cmd命令的参数格式一般都是:斜杠表示命令 /?
- 命令参数放在前或后都行
- Tab键: 补全 文件名( 这个不是命令,是快捷方式)
- 目录中*是通配符,如:
- *.bat 所有扩展名是bat的文件
- a* 显示所有文件名是a的文件
- a? 显示所有文件名是以a开头,并只有2个字母,?代表任意字符
- 输出空行:https://zhidao.baidu.com/question/751039304703168172.html
- 批处理里 &、&&和|| 三个逻辑命令符的意思及区别:https://www.hack520.com/568.html 或 https://blog.csdn.net/Oliver_xpl/article/details/88717522
& 顺序执行多条命令,而不管命令是否执行成功; && 当&&前面的命令成功执行时,执行&&后面的命令,否则不执行; || 当||前面的命令失败时,执行||后面的命令,否则不执行。
说明:每个命令都会有返回值,即状态码。上个命令的状态码 值 就是 %errorlevel% 。 https://www.cnblogs.com/5201351/p/13606941.html
-
cmd命令中 文件 path写法:
path中目录是用反斜杠隔开,以斜杠隔开就会报错。cmd中斜杠一般表示参数。cd application-back\db
虽然在cmd中有的命令使用斜杠也是可以的,但是大部分是不支持斜杠的。默认都是支持反斜杠的,避免出现错误,cmd中和path相关的,目录分隔统一使用反斜杠。
-
批处理
批处理教程:http://docs.30c.org/dosbat/ 或 https://www.w3cschool.cn/pclrmsc/(W3C网站)或 https://blog.csdn.net/chen801090/article/details/108225268
批处理 与 DOS命令 的关系:https://blog.csdn.net/zlpzlpzyd/article/details/18714743
(个人理解)DOS命令是对系统的操作,批处理是脚本,有逻辑。即批处理的功能是,使用批处理的逻辑,去调用DOS命令,执行一些操作。
一、批处理常用命令:
Batch 常用命令包含:echo、::/rem、title/color、cd/md/dir、rd/del/copy、pause、goto、for、if、set、start等
@echo off 代表在本行开始关闭回显,不显示正在执行的批处理命令及执行结果,一般放在批处理文件第一行 echo 日志参数:用于在控制台输出日志,偏于理解脚本执行逻辑 ::/rem 注释内容:注释内命令 title/color:设置窗体标题和背景颜色pause:暂停命令,一般放在批处理文件最后一行 goto:跳转命令,一般和「 : 任务名称 」搭配使用,执行一个循环任务,实例见第 3 节 for:循环命令,和 Python 中的 for 语法类似 if:判断命令 set:设置一个变量 start:调用外部程序的命令
二、语法:
1、批处理出现乱码是因为字符集问题。编辑批处理文件时,以ANSI方式编辑即可。(批处理当作一种工具,帮助我们快速,自动化 处理某些问题)
2、批处理的注释:https://www.cnblogs.com/xiaoqisfzh/p/5565829.html(大部分注释都是单独开始一行的)
行间注释使用 : %注释内容%
3、echo 与 pause:第一条语句放在cmd命令框目录的后面;最后一条命令执行完就会关闭命令框。这两种过程,都不利于我们发现执行情况。所以一般在开始 和 结尾各加一个命令:
@echo off %关闭命令本身的回显% echo 测试 pause %暂停关闭命令框%
注:关闭命令本身的回显,命令前面的目录路径也会一起关闭的。
4、if 语句:https://www.w3cschool.cn/pclrmsc/gmjsnz.html
5种if语句的基本语法:
1。判断两个字符串是否相等,if "字符串1"=="字符串2" command 语句;
2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句;
3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句;
4。判断变量是否已经定义,if defined 变量 command 语句;
5。判断上个命令的返回值,if errorlevel 数值 command 语句。
多条件 的 if 语句:可以使用 else
5、bat文件运行完后就会自动关闭窗口:两种方式实现
a、pause:不关闭窗口,但不能继续输入命令了。
b、cmd:不关闭窗口,可以继续输入命令,并执行。如 cmd /k ,带上K参数,cmd命令输出的内容就不会显示
6、set 命令(设置变量):https://www.w3cschool.cn/pclrmsc/wlreo3.html (获取变量值使用 %变量名%,如 echo %var%)
a、设置 变量的值 为脚本定好的:
set var=abcd echo %var%
b、设置 变量的值 为用户输入的:
set /p var=请输入变量的值: %只需要加一个"/P"参数就可以了% echo 您输入了%var%
c、设置 变量的值 可以是一个表达式(简单的运算):
set /p input=请输入计算表达式: %输入内容:19-10% set /a var=%input% echo 计算结果:%input%=%var%
7、for 循环语句:https://www.w3cschool.cn/pclrmsc/yqaho0.html
8、goto 流程跳转:https://www.cnblogs.com/Braveliu/p/5077868.html 或 https://www.cnblogs.com/canglongdao/p/12509687.html
常用 goto label 语句进行流程控制
set /p input=请输入字母A或B: if "%input%"=="A" goto A if "%input%"=="B" goto B pause %两个条件都不满足,执行这里% exit :A echo 您输入的字母是A pause exit :B echo 您输入的字母是B
9、批处理可以调用powershell的命令:
CMD只能执行基本的任务,PowerShell因为是基于【.NET】面向对象的。大部分功能都可以做。如下,替换txt文件中的某个字符串
set "strOld=aaa" set "strNew=zzzzz" :: 将当前目录(包括子目录)下的所有 TXT 文本中的 aaaaa 替换为 zzzzz for /f %%i in ('dir /b /s /a:-d *.txt') do ( powershell -Command "(gc %%i) -replace '%strOld%', '%strNew%' | Out-File %%i" )
10、bat处理运行node、npm等 安装程序的命令时,执行完第一个就会关闭窗口的问题:https://zhidao.baidu.com/question/585475292689414325.html 或 http://ask.zol.com.cn/x/3099519.html
解决方法,使用 call 调用,这些命令。 如 call npm init
11、cmd中启动批处理程序.bat后传入参数:https://blog.csdn.net/naibozhuan3744/article/details/80500766
这个功能在 node 的 包中经常被使用,script 脚本命令 写入的参数会传递到 cmd批处理文件中。
三、命令行常量: https://www.cnblogs.com/echohelper/p/14153872.html
- %CD%:列出当前目录。
- %DATE%:列出当前日期。
- %TIME%:列出当前时间
- %tmp%:当前用户的临时目录
- %systemroot%:当前用户的主目录
常用批处理
1、垃圾文件清除.bat
@echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.gid del /f /s /q %systemdrive%\*.chk del /f /s /q %systemdrive%\*.old del /f /s /q %windir%\*.bak del /f /s /q %windir%\temp\*.* del /f /a /q %systemdrive%\*.sqm del /f /s /q %windir%\SoftwareDistribution\Download\*.* del /f /s /q "%userprofile%\cookies\*.*" del /f /s /q "%userprofile%\recent\*.*" del /f /s /q "%userprofile%\local settings\temporary internet files\*.*" del /f /s /q "%userprofile%\local settings\temp\*.*" echo 清除系统垃圾文件完成! echo. & pause
2、可选择任务的批处理(使用if和goto语句实现流程控制)
@echo off echo 请选择执行命令 echo ==================== echo 1.查ip地址 echo 2.打开212共享文件 echo 3.计算器 echo 4.创建wifi设置 echo 5.开启wife echo 6.关闭wife :abc echo ===================== set /p user_input=请输入需要执行命令的 选项数字 if %user_input% equ 1 ipconfig if %user_input% equ 2 start \\10.8.206.212\临时共享区 if %user_input% equ 3 calc if %user_input% equ 4 netsh wlan set hostednetwork mode=allow ssid=4Gtest key=12345678 if %user_input% equ 5 netsh wlan start hostednetwork if %user_input% equ 6 netsh wlan stop hostednetwork echo 是否继续 echo ===================== set /p isShutter=输入n关闭 if %isShutter% equ n exit goto abc
3、如何提取文件夹内所有文件的名称 https://jingyan.baidu.com/article/9158e0004080baa2541228b6.html
DIR *.* /B > 文件名称列表.txt
4、利用批处理命令批量修改文件名 https://baijiahao.baidu.com/s?id=1605159303922067169&wfr=spider&for=pc&isFailFlag=1
5、替换txt文件中指定的字符:https://blog.csdn.net/dbyoung/article/details/105305559