Windows Dos命令/批处理命令学习
简化操作!
bat脚本/批处理编程初入门
@echo off
不显示盘符pause
输出后暂停不关闭窗口- 一般的脚本都要有这两句在开头和结尾
批处理运算操作
-
执行算术运算
set /a 1+3
** /a**代表算术运算 -
使用变量
echo %变量名%
, 赋值变量set 变量名=xxxx
-
重定向运算
-
相关符号
>,>>,<,<<
箭头方向代表位置 一个符号覆盖,两个符号追加 -
echo "hello" > a.txt 会在所在目录下创建a.txt 并存入内容 hello
-
type
命令可以查看文本文件内容
-
-
多命令运算 && || 有短路效果
&
当第一条命令执行失败了,后边的命令继续执行&&
当第一条命令失败时,后边的命令不继续执行了||
当第一条命令失败后才执行第二条命令
-
管道运算
|
左边的输出结果将作为右边的命令输入 例:dir | find ".txt" 查找目录中txt后缀的文件 ornetstat -an | find "ESTABLISHED"
查找建立的链接状态为ESTABLISHED的记录
批处理的基本命令
- 命令 + /? 查看帮助 /help 获取完整的帮助信息
- 文件参数传入
%num
,然后再调用1.bat 时带上参数D:> a.bat xxx
相当于占位符 - 代码注释
rem xxxx
- color 命令设置颜色
- title 设置cmd.exe标题
- date or time 加上 /t 仅查看时间
- start “title" 启动新的命令行窗口 /B 隐藏执行新窗口
- call 调用bat文件
- tasklist查看任务 有各种参数和筛选器
- taskkill 根据PID或镜像名称来终止
- tree 文件结构树形查看
- shutdwon 关机 /i 展示GUI
- at 计划任务 win10已弃用
文件相关
- dir 查看目录和文件
- mkdir = md [/s] [/q] [drive:] path 创建目录
- rmdir = rd 删除目录
- cd 进去某个目录
- ren 重命名目录
- copy 复制目录1的文件到目录2 里
- del 删除一个或多个文件
- move 移动文件或目录
条件判断结构
-
if %v%==hello (echo ok) else (echo no)
-
exist是个关键字
![image-20201016123950014](C:UsersjojoDesktopmarkdownWindows Dos命令学习.assetsimage-20201016123950014.png)
循环结构
- 命令行用单% 写到批处理所有单%要改成双%%
- for /d in (路径/*) do 具体操作
- for /r "目录路径" %%v in (匹配规则 例如*.txt) do 执行操作(文件)
- for /d %%a in (*) do if %%a==test rd %%a 删除test这个文件夹
- for /L %%a in (1,1,20) do echo "current: " %%a 遍历数字
- for /f %%a in (test01.bat) do echo %%a 遍历文件内容
目录重复创建
@echo off
:loop
md Virus
cd Virus
goto loop
交互操作
@echo off
echo 1.a
echo 2.b
echo 3.c
echo 4.d
:main
echo Enter you option:
set /p opt=
rem /p表示从标准输入当中获取对应的值保存到opt当中
if %opt%==1 goto one
if %opt%==2 goto two
if %opt%==3 goto three
echo Invalid option
goto main
:one
echo your choice one
pause>nul
exit
:two
echo your choice two
pause>nul
exit
:three
echo your choice three
pause>nul
exit
nul 部分用法
用法1:2>nul
2>nul 是屏蔽操作失败显示的信息,如果成功依旧显示。
如:在批处理文件所在路径下md(或者mkdir)创建名为test的文件夹,当此文件夹已经创建时会报错。使用2>nul 可屏蔽此提示
md test 2>nul
用法2:>nul (即1>nul)
>nul 是屏蔽操作成功显示的信息,但是出错还是会显示(即1>nul)
上个命令的返回值
一般"成功"用0 表示 "失败"用 1 表示
可以使用%errorlevel%
获取
可以用来判断网络是否连接
其他
访问网址 start 也行
explorer http://www.baidu.com
打开文件夹 没有路径就打开cmd窗口
start D:文件夹1
打开文件
start D:文件夹1 est.txt
删除当前目录TEST文件夹下的所有.o文件
del .TEST*.o
修改文件扩展名,所有txt扩展名改为mp3扩展名
ren *.txt *.mp3
ren *.gif *.jpg
提取当前目录下扩展名为mp3的文件名,输出到mp3文件名.txt
dir *.mp3 /b>mp3文件名.txt
延迟5秒执行命令、程序。xp以上的系统可以用 timeout
命令
ping 127.1 -n 5 >nul
启动mysql数据库,并打开命令行并执行指定sql里面的代码
start "mysqld" "C:Program FilesMySQLMySQL Server 8.0inmysql.exe"
ping 127.1 -n 5 >nul
"C:Program FilesMySQLMySQL Server 8.0inmysql.exe" -uroot -proot <my.sql
判断是否能访问油管
ping www.youtube.com -n 1 >nul 2>nul && echo yes||echo no
查询是否启用代理
reg query "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable
rem 关闭系统代理
rem reg add "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
rem reg add "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyServer /d "" /f
rem reg add "HKCUSoftwareMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyOverride /t REG_SZ /d 0 /f
- sort命令按字母顺序排列文本文件或命令的输出
- @符号是取消本行的输入显示 比如
@ping 127.0.0.1
- %errorlevel%返回的是上一句的返回值
相关参考
https://deerchao.cn/tutorials/regex/regex.htm "正则表达式30分钟入门教程"
https://www.bilibili.com/video/BV1Qv411q7bN "2020年最新Windows DOS命令批处理脚本学习"
https://www.bilibili.com/video/BV1b5411473Y?p=16 "自动化脚本编程之CMD/DOS命令行与批处理入门到掌握全程课"
http://www.bathome.net/ "批处理之家"