Windows 批处理脚本学习

Windows Dos命令/批处理命令学习

简化操作!

bat脚本/批处理编程初入门

  • @echo off不显示盘符
  • pause输出后暂停不关闭窗口
  • 一般的脚本都要有这两句在开头和结尾

批处理运算操作

  1. 执行算术运算 set /a 1+3 ** /a**代表算术运算

  2. 使用变量 echo %变量名%, 赋值变量 set 变量名=xxxx

  3. 重定向运算

    1. 相关符号>,>>,<,<<箭头方向代表位置 一个符号覆盖,两个符号追加

    2. echo "hello" > a.txt 会在所在目录下创建a.txt 并存入内容 hello

    3. type命令可以查看文本文件内容

  4. 多命令运算 && || 有短路效果

    1. &当第一条命令执行失败了,后边的命令继续执行
    2. &&当第一条命令失败时,后边的命令不继续执行了
    3. ||当第一条命令失败后才执行第二条命令
  5. 管道运算 |左边的输出结果将作为右边的命令输入 例:dir | find ".txt" 查找目录中txt后缀的文件 or netstat -an | find "ESTABLISHED"查找建立的链接状态为ESTABLISHED的记录

批处理的基本命令

  1. 命令 + /? 查看帮助 /help 获取完整的帮助信息
  2. 文件参数传入 %num ,然后再调用1.bat 时带上参数 D:> a.bat xxx 相当于占位符
  3. 代码注释 rem xxxx
  4. color 命令设置颜色
  5. title 设置cmd.exe标题
  6. date or time 加上 /t 仅查看时间
  7. start “title" 启动新的命令行窗口 /B 隐藏执行新窗口
  8. call 调用bat文件
  9. tasklist查看任务 有各种参数和筛选器
  10. taskkill 根据PID或镜像名称来终止
  11. tree 文件结构树形查看
  12. shutdwon 关机 /i 展示GUI
  13. at 计划任务 win10已弃用

文件相关

  1. dir 查看目录和文件
  2. mkdir = md [/s] [/q] [drive:] path 创建目录
  3. rmdir = rd 删除目录
  4. cd 进去某个目录
  5. ren 重命名目录
  6. copy 复制目录1的文件到目录2 里
  7. del 删除一个或多个文件
  8. move 移动文件或目录

条件判断结构

  1. if %v%==hello (echo ok) else (echo no)

  2. exist是个关键字

    ![image-20201016123950014](C:UsersjojoDesktopmarkdownWindows Dos命令学习.assetsimage-20201016123950014.png)

循环结构

  1. 命令行用单% 写到批处理所有单%要改成双%%
  2. for /d in (路径/*) do 具体操作
  3. for /r "目录路径" %%v in (匹配规则 例如*.txt) do 执行操作(文件)
  4. for /d %%a in (*) do if %%a==test rd %%a 删除test这个文件夹
  5. for /L %%a in (1,1,20) do echo "current: " %%a 遍历数字
  6. 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/ "批处理之家"

原文地址:https://www.cnblogs.com/somegenki/p/13828823.html