小知识点
- 文件格式一定要是 ANSI,不要是UTF-8,要不然赋值中文会有问题!!
- 大小写随意,不敏感
- 注释使用两个
::
冒号进行 脚本想通过相对路径操作脚本所处目录的文件时,需要先通过
cd /d %~dp0
切换到当前目录,因为若脚本是使用管理员权限运行,那脚本当前目录是管理员目录,并不是实际所处的目录,相对路径肯定就GG了,如下示例:::进入当前目录,拷贝文件
cd /d %~dp0
copy %BAT_NAME% %BAT_DIR%
copy %VBS_NAME% %VBS_DIR%
if 语句后面必须有 else 语句
- 输出空行可以使用
echo;
- 脚本提前退出直接用
exit
- 暂停待输入用
pause
,要不然直接运行就关闭了,pause会要求输入一个任意字符后关闭 - @echo off
命令操作
其他命令
| 描述 | 命令 | | —- | —- | | 复制 | copy <源文件> <目的路径> | | 删除 | del <文件名> | | 显示目录 | dir | | 跟踪路由 | tracert -d| | 定时关机 | shutdown -s -t <秒数> | | PING | ping -t | | 查看DNS | ipconfig /displaydns |
路由相关
使用 Route 命令行工具查看并编辑计算机的 IP 路由表。Route 命令和语法如下所示:
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
-f 清除所有网关入口的路由表。
-p 与 add 命令一起使用时使路由具有永久性。
Command 指定您想运行的命令 (Add/Change/Delete/Print)。
Destination 指定该路由的网络目标。
mask Netmask 指定与网络目标相关的网络掩码(也被称作子网掩码)。
Gateway 指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。
metric Metric 为路由指定一个整数成本值标(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。
if Interface 为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。
? 在命令提示符处显示帮助。
注:仅 添加的路由重启后不保存,仅为临时路由,需要加 参数添加永久路由route add``-p
要显示 IP 路由表的完整内容,请键入:
route print
要显示 IP 路由表中以 10. 开始的路由,请键入:
route print 10.*
要添加默认网关地址为 192.168.12.1 的默认路由,请键入:
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的永久路由,请键入:
route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,跃点数为 7 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7
要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,接口索引为 0x3 的路由,请键入:
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3
要删除目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由,请键入:
route delete 10.41.0.0 mask 255.255.0.0
要删除 IP 路由表中以 10. 开始的所有路由,请键入:
route delete 10.*
要将目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由的下一个跃点地址由 10.27.0.1 更改为 10.27.0.25,请键入:
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开机自启动
使用vbs让bat后台运行不显示黑框
rem 使用固定路径在后台启动bat,不显示黑框
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c C:\2_ISSP_L2TP_CONFIG.bat",vbhide
变量定义与使用(拼接)
::定义
set BAT_DIR=C:\
::使用 %定义% 进行引用,两个定义直接拼接
set BAT_PATH=%BAT_DIR%%BAT_NAME%
::变量中有纯字符串直接拼接
set VBS_PATH=%VBS_DIR%\%VBS_NAME%
::赋值内容中若有空格,可以用双引号括起来,要不然就是两条语句了,直接赋值失败
set WINDOWS_STARTUP=aaaa\"Start Menu"\Paaa
注意:
=
号两边不能有任何空格,要不然定义失败,会显示echo关闭- 赋值内容中若有空格,可以用双引号括起来,要不然就是两条语句了,直接赋值失败
定时 TIMEOUT,类似sleep
set RETRY_TIME=60
TIMEOUT /T %RETRY_TIME% /NOBREAK
死循环
:start
xxx
goto start
常见路径获取
echo 当前盘符:%~d0
echo 当前盘符和路径:%~dp0
echo 当前批处理全路径:%~f0
echo 当前盘符和路径的短文件名格式:%~sdp0
echo 当前CMD默认目录:%cd%
pause
批处理文件的@echo off
DOS在运行批处理时,
会依次执行批处理中的每条命令,
并且会在显示器上显示,
如果你不想让它们显示,
可以加一个“echo off”
当然,“echo off”也是命令,
它本身也会显示,
如果连这条也不显示,
就在前面加个“@”。
pause
使显示器停下,并显示“请按任意键继续 _”
例如一
@echo off
@echo hello!
pause
显示如下图hello1,不会显示执行的命令,只会展示结果
例如二
@echo on
@echo hello!
pause
显示如下图hello2,会显示执行的命令,可以方便调试,但影响输出