小知识点

  1. 文件格式一定要是 ANSI,不要是UTF-8,要不然赋值中文会有问题!!
  2. 大小写随意,不敏感
  3. 注释使用两个 :: 冒号进行
  4. 脚本想通过相对路径操作脚本所处目录的文件时,需要先通过 cd /d %~dp0 切换到当前目录,因为若脚本是使用管理员权限运行,那脚本当前目录是管理员目录,并不是实际所处的目录,相对路径肯定就GG了,如下示例:

    1. ::进入当前目录,拷贝文件
    2. cd /d %~dp0
    3. copy %BAT_NAME% %BAT_DIR%
    4. copy %VBS_NAME% %VBS_DIR%
  5. if 语句后面必须有 else 语句

  6. 输出空行可以使用 echo;
  7. 脚本提前退出直接用 exit
  8. 暂停待输入用 pause,要不然直接运行就关闭了,pause会要求输入一个任意字符后关闭
  9. @echo off

    命令操作

    其他命令

    | 描述 | 命令 | | —- | —- | | 复制 | copy <源文件> <目的路径> | | 删除 | del <文件名> | | 显示目录 | dir | | 跟踪路由 | tracert -d | | 定时关机 | shutdown -s -t <秒数> | | PING | ping -t | | 查看DNS | ipconfig /displaydns |

路由相关

  1. 使用 Route 命令行工具查看并编辑计算机的 IP 路由表。Route 命令和语法如下所示:
  2. route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
  3. -f 清除所有网关入口的路由表。
  4. -p add 命令一起使用时使路由具有永久性。
  5. Command 指定您想运行的命令 (Add/Change/Delete/Print)。
  6. Destination 指定该路由的网络目标。
  7. mask Netmask 指定与网络目标相关的网络掩码(也被称作子网掩码)。
  8. Gateway 指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。
  9. metric Metric 为路由指定一个整数成本值标(从 1 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。
  10. if Interface 为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。
  11. ? 在命令提示符处显示帮助。

注:仅 添加的路由重启后不保存,仅为临时路由,需要加 参数添加永久路由route add``-p

  1. 要显示 IP 路由表的完整内容,请键入:
  2. route print
  3. 要显示 IP 路由表中以 10. 开始的路由,请键入:
  4. route print 10.*
  5. 要添加默认网关地址为 192.168.12.1 的默认路由,请键入:
  6. route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
  7. 要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的路由,请键入:
  8. route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
  9. 要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的永久路由,请键入:
  10. route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
  11. 要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,跃点数为 7 的路由,请键入:
  12. route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
  13. 要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,接口索引为 0x3 的路由,请键入:
  14. route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
  15. 要删除目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由,请键入:
  16. route delete 10.41.0.0 mask 255.255.0.0
  17. 要删除 IP 路由表中以 10. 开始的所有路由,请键入:
  18. route delete 10.*
  19. 要将目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由的下一个跃点地址由 10.27.0.1 更改为 10.27.0.25,请键入:
  20. route change 10.41.0.0 mask 255.255.0.0 10.27.0.25

打印文件列表

CMD执行命令:
dir /b /o:n > list.txt

保存为 .bat 文件运行也可
list_file.bat

常用代码

bat开机自启动

搜索参考:2020.02.13_ISSP_L2TP自动启动

使用vbs让bat后台运行不显示黑框

  1. rem 使用固定路径在后台启动bat,不显示黑框
  2. Set ws = CreateObject("Wscript.Shell")
  3. ws.run "cmd /c C:\2_ISSP_L2TP_CONFIG.bat",vbhide

变量定义与使用(拼接)

  1. ::定义
  2. set BAT_DIR=C:\
  3. ::使用 %定义% 进行引用,两个定义直接拼接
  4. set BAT_PATH=%BAT_DIR%%BAT_NAME%
  5. ::变量中有纯字符串直接拼接
  6. set VBS_PATH=%VBS_DIR%\%VBS_NAME%
  7. ::赋值内容中若有空格,可以用双引号括起来,要不然就是两条语句了,直接赋值失败
  8. set WINDOWS_STARTUP=aaaa\"Start Menu"\Paaa

注意:

  1. = 号两边不能有任何空格,要不然定义失败,会显示echo关闭
  2. 赋值内容中若有空格,可以用双引号括起来,要不然就是两条语句了,直接赋值失败

    定时 TIMEOUT,类似sleep

    1. set RETRY_TIME=60
    2. TIMEOUT /T %RETRY_TIME% /NOBREAK

    死循环

    1. :start
    2. xxx
    3. goto start

    常见路径获取

    1. echo 当前盘符:%~d0
    2. echo 当前盘符和路径:%~dp0
    3. echo 当前批处理全路径:%~f0
    4. echo 当前盘符和路径的短文件名格式:%~sdp0
    5. echo 当前CMD默认目录:%cd%
    6. pause

    批处理文件的@echo off

    DOS在运行批处理时,
    会依次执行批处理中的每条命令,
    并且会在显示器上显示,
    如果你不想让它们显示,
    可以加一个“echo off”

当然,“echo off”也是命令,
它本身也会显示,
如果连这条也不显示,
就在前面加个“@”。

pause
使显示器停下,并显示“请按任意键继续 _”

例如一

  1. @echo off
  2. @echo hello!
  3. pause

显示如下图hello1,不会显示执行的命令,只会展示结果
image.png

例如二

  1. @echo on
  2. @echo hello!
  3. pause

显示如下图hello2,会显示执行的命令,可以方便调试,但影响输出
image.png