Windows操作系统中bat脚本和命令
bat文件是一种批处理文件,bat文件的格式非常简单,每一个命令占用一行,并且这些命令与在命令提示符下直接输入的命令完全相同。此外,BAT文件还可以包含变量、条件语句和循环等结构,以实现更复杂的逻辑。运行BAT文件时,只需双击该文件,或者在命令行中调用它,Windows就会启动命令解释器(通常是cmd.exe)来依次执行文件中的命令。需要注意的是,由于BAT文件可以直接执行系统级命令,因此它们也可
bat文件是一种批处理文件,bat文件的格式非常简单,每一个命令占用一行,并且这些命令与在命令提示符下直接输入的命令完全相同。此外,BAT文件还可以包含变量、条件语句和循环等结构,以实现更复杂的逻辑。运行BAT文件时,只需双击该文件,或者在命令行中调用它,Windows就会启动命令解释器(通常是cmd.exe)来依次执行文件中的命令。需要注意的是,由于BAT文件可以直接执行系统级命令,因此它们也可能被用来传播恶意软件。所以在运行来自不可信来源的BAT文件时应当特别小心。
1. echo 命令
功能
用于显示消息或控制命令回显。在批处理文件中,@echo off通常放在第一行以防止后续命令文本被显示出来。
语法
echo [ON | OFF]echo [message]@echo off
实例
@echo off
echo This message will be displayed.
echo.
echo Another line of text.
上面的例子展示了如何使用echo来输出文本,并且可以通过echo.来创建空行。
2. if / else 条件语句
功能
根据条件执行不同的命令序列。可以检查文件是否存在、变量是否相等、字符串比较等。
语法
if condition (command) else (command)if exist filename (command) else (command)if "%variable%"=="value" (command) else (command)
实例
@echo off
if exist file.txt (
echo File exists.
) else (
echo File does not exist.
)
set var=hello
if "%var%"=="hello" (
echo Variable matches "hello".
) else (
echo Variable does not match "hello".
)
3. for 循环
功能
用于迭代一组文件或进行数值循环。支持多种类型的循环,包括遍历目录中的文件、指定范围内的数字等。
语法
for %%variable in (set) do commandfor /L %%variable in (start,step,end) do commandfor /F "tokens=* delims=" %%i in ('command') do command
实例
@echo off
:: 遍历所有 .txt 文件并显示它们的内容
for %%f in (*.txt) do (
echo Processing file: %%f
type %%f
)
:: 数值循环,从1到5
for /L %%i in (1,1,5) do (
echo Number: %%i
)
:: 使用 for /F 解析命令输出
for /F "tokens=* delims=" %%i in ('dir /b') do (
echo Found file or directory: %%i
)
4. set 环境变量
功能
设置或修改环境变量,可以是全局或局部(通过setlocal/endlocal)。
语法
set variable=valuesetlocalendlocal
实例
@echo off
set PATH=%PATH%;C:\NewPath
echo New PATH: %PATH%
setlocal
set MYVAR=HelloWorld
echo Local variable MYVAR: %MYVAR%
endlocal
:: 这里的 MYVAR 已经不再可用
echo After endlocal, MYVAR is not set: %MYVAR%
5. call 调用其他批处理文件
功能
调用另一个批处理脚本并返回到当前脚本继续执行。这允许你创建模块化的批处理文件。
语法
call script.bat [arguments]
实例
假设有一个名为setup.bat的批处理文件:
@echo off
echo Setting up environment...
主批处理文件中可以这样调用它:
@echo off
call setup.bat
echo Setup completed.
6. goto 标签跳转
功能
跳转到批处理文件中的某个标签处。有助于创建逻辑流程控制。
语法
goto label:label
实例
@echo off
:start
echo This is the start of the script.
goto middle
:middle
echo This is the middle part.
goto end
:end
echo This is the end of the script.
7. pause 暂停
功能
暂停批处理文件的执行,并等待用户按键。常用于调试或需要用户确认的地方。
语法
pause
实例
@echo off
echo Press any key to continue...
pause >nul
echo Continuing with the script...
这里使用>nul来隐藏Press any key to continue...的消息,只保留实际的暂停功能。
8. exit 退出
功能
退出命令解释器或结束批处理脚本。可以选择性地传递一个退出代码给父进程。
语法
exit [/B] [exitCode]
实例
@echo off
echo Exiting script now...
exit /B 0
/B 参数告诉exit只退出批处理文件而不是关闭CMD窗口;0是一个示例退出代码,表示成功完成。
9. shift 参数移动
功能
在批处理文件中使用时,shift 命令会将命令行参数(%1, %2, 等)向左移动一位,使 %2 成为 %1,以此类推。这对于处理未知数量的参数非常有用。
实例
@echo off
:loop
if "%1"=="" goto end
echo Processing argument: %1
shift
goto loop
:end
echo Done.
10. start 启动程序或命令
功能
启动另一个程序、命令或批处理文件,可以在新窗口中执行。
语法
start ["title"] [/D path] [program] [arguments]start "" "notepad.exe"
实例
@echo off
start "" notepad.exe
echo Notepad should be open now.
11. taskkill 终止进程
功能
用于终止一个或多个进程。可以按照进程ID (PID) 或者根据进程名称来终止。
语法
taskkill /PID <pid> [/F]taskkill /IM <image name> [/F]
实例
@echo off
taskkill /IM notepad.exe /F
echo Notepad has been closed.
12. findstr 搜索字符串
功能
搜索文件中的文本模式。类似于Linux下的grep命令。
语法
findstr /C:"string" file.txtfindstr /R "regex" file.txt
实例
@echo off
findstr /C:"hello" file.txt
echo Found lines containing 'hello'.
13. xcopy 复制文件和目录树
功能
比copy更为强大的复制命令,支持复制整个目录结构以及设置各种选项如覆盖现有文件等。
语法
xcopy source destination [options]
实例
@echo off
xcopy C:\Source\* D:\Backup\ /S /E /Y
echo Files copied to backup directory.
14. robocopy 高级文件复制
功能
robocopy 是一个更加先进的文件复制工具,提供了更多选项,例如镜像功能、多线程复制等。
语法
robocopy source destination [files] [options]
实例
@echo off
robocopy C:\Source D:\Backup /MIR
echo Backup completed with robocopy.
15. choice 用户选择输入
功能
让用户从给定的选项中做出选择。这个命令可以让批处理脚本更具交互性。
语法
choice [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
实例
@echo off
choice /C YN /M "Do you want to continue? [Y/N]"
if errorlevel 2 (
echo You chose No.
) else if errorlevel 1 (
echo You chose Yes.
)
16. timeout 暂停一段时间
功能
暂停批处理文件的执行一段时间,然后继续。
语法
timeout /T seconds [/NOBREAK]
实例
@echo off
timeout /T 5 /NOBREAK
echo Waited for 5 seconds.
17. wmic Windows Management Instrumentation Command-line
功能
访问WMI(Windows Management Instrumentation)信息和服务,可以用来获取硬件信息、操作系统详情等。
语法
wmic [options]
实例
@echo off
wmic os get Caption,Version,BuildNumber
18. net 网络配置命令
功能
管理网络连接、用户账户、服务等。
语法
net [command]
实例
@echo off
net user Administrator /active:yes
echo Administrator account activated.
19. reg 注册表操作
功能
用于读取、添加、修改或删除Windows注册表项。
语法
reg query "keyname" [/v valuename]reg add "keyname" /v valuename /t type /d data [/f]reg delete "keyname" [/v valuename]
实例
@echo off
:: 查询注册表键值
reg query "HKCU\Environment" /v TEMP
:: 添加一个注册表键值
reg add "HKCU\Software\MyApp" /v Setting /t REG_SZ /d "Value" /f
:: 删除一个注册表键值
reg delete "HKCU\Software\MyApp" /v Setting /f
20. powershell 调用PowerShell命令
功能
允许你在批处理文件中调用PowerShell命令或脚本,利用PowerShell的强大功能。
语法
powershell -Command "command"powershell -File "script.ps1"
实例
@echo off
powershell -Command "Get-Process | Where-Object {$_.Name -eq 'notepad'}"
21. schtasks 计划任务管理
功能
创建、删除、查询、更改、运行和结束计划任务。
语法
schtasks /create /tn "TaskName" /tr "cmd.exe" /sc DAILY /st HH:MMschtasks /delete /tn "TaskName" /f
实例
@echo off
:: 创建一个每天执行的任务
schtasks /create /tn "DailyBackup" /tr "D:\BackupScript.bat" /sc DAILY /st 02:00
:: 删除任务
schtasks /delete /tn "DailyBackup" /f
22. ipconfig 网络配置
功能
显示所有网络适配器的TCP/IP配置信息,并可刷新DNS缓存等。
语法
ipconfig [options]
实例
@echo off
ipconfig /all > network_info.txt
echo Network information saved to network_info.txt.
23. netstat 网络统计信息
功能
显示活动的TCP连接、计算机侦听的端口、以太网统计信息、IP路由表、IPv4统计信息(对于IP、ICMP、TCP和UDP)、IPv6统计信息。
语法
netstat [options]
实例
@echo off
netstat -ano > active_connections.txt
echo Active connections saved to active_connections.txt.
24. nslookup 域名解析
功能
查询域名系统 (DNS) 来获取域名或IP地址的信息。
语法
nslookup [hostname]
实例
@echo off
nslookup www.example.com > dns_lookup.txt
echo DNS lookup results saved to dns_lookup.txt.
25. setx 设置环境变量(持久化)
功能
设置用户或系统的环境变量,使其在重启后仍然有效。
语法
setx variable value [/M]
实例
@echo off
setx PATH "%PATH%;C:\NewPath" /M
echo PATH environment variable updated and will persist after reboot.
26. certutil 证书实用工具
功能
用于管理和查看证书,也可以用来下载文件(非官方用途)。
语法
certutil -urlcache *certutil -addstore My certificate.cer
实例
@echo off
:: 清除URL缓存
certutil -urlcache * delete
:: 添加证书到个人存储
certutil -addstore My C:\path\to\certificate.cer
27. diskpart 磁盘分区管理
功能
用于磁盘分区的创建、删除、格式化等管理操作。
语法
diskpart- 使用交互式命令如
list disk,select disk X,clean,create partition primary,format fs=ntfs quick
实例
@echo off
echo list disk > script.txt
echo select disk 1 >> script.txt
echo clean >> script.txt
echo create partition primary >> script.txt
echo format fs=ntfs quick >> script.txt
diskpart /s script.txt
del script.txt
echo Disk operations completed.
28. bcdedit 引导配置数据编辑
功能
用于查看和修改Windows启动加载程序选项。
语法
bcdedit [options]
实例
@echo off
bcdedit /enum all > boot_config.txt
echo Boot configuration saved to boot_config.txt.
29. subst 子目录替换
功能
将路径映射为虚拟驱动器,方便访问长路径。
语法
subst X: pathsubst X: /D
实例
@echo off
subst Z: C:\Very\Long\Path
echo Long path mapped to drive Z:.
30. powershell 高级用法
功能
除了简单的PowerShell命令调用外,还可以通过批处理文件运行复杂的PowerShell脚本,并传递参数。
实例
@echo off
set scriptPath=C:\Scripts\MyScript.ps1
set param1=Value1
set param2=Value2
powershell -ExecutionPolicy Bypass -File "%scriptPath%" -Param1 "%param1%" -Param2 "%param2%"
31. curl 和 wget 网络请求
功能
从Windows 10开始,curl 和 wget 命令被内置支持,可以用来进行HTTP请求、下载文件等。
实例
@echo off
:: 使用 curl 下载文件
curl -o example.zip http://example.com/file.zip
:: 使用 wget 下载文件
wget http://example.com/file.zip -O example.zip
32. certutil 进阶用法
功能
除了证书管理,certutil 还可以用作一个简易的十六进制编辑器或用于校验文件哈希值。
实例
@echo off
:: 校验文件的SHA256哈希值
certutil -hashfile file.txt SHA256
33. forfiles 文件筛选
功能
forfiles 命令可以用来查找特定目录下的文件,并对找到的文件执行命令。
实例
@echo off
:: 查找并删除30天前的.log文件
forfiles /p C:\Logs /m *.log /d -30 /c "cmd /c del @path"
34. assoc 和 ftype 文件关联
功能
用于查看和修改文件扩展名与应用程序之间的关联。
实例
@echo off
:: 查看 .txt 文件关联的应用程序
assoc .txt
ftype txtfile
:: 修改 .txt 文件关联为记事本
assoc .txt=txtfile
ftype txtfile=notepad.exe %1
35. mode 设置窗口大小
功能
设置命令提示符窗口的大小和缓冲区大小。
实例
@echo off
mode con: cols=80 lines=25
36. color 设置颜色
功能
改变命令行窗口的背景色和前景色(文字颜色)。
实例
@echo off
color 0A :: 黑底绿字
37. title 设置窗口标题
功能
设置命令提示符窗口的标题。
实例
@echo off
title My Batch Script
38. prompt 更改提示符
功能
更改命令行提示符的格式。
实例
@echo off
prompt $P$G :: 默认提示符
prompt MY_PROMPT$S$G :: 自定义提示符
39. pushd 和 popd 目录堆栈
功能
pushd 可以将当前目录压入堆栈,并切换到新目录;popd 则从堆栈中弹出最近的目录并切换回该目录。
实例
@echo off
pushd C:\Temp
:: 在这里操作 C:\Temp 目录
popd
:: 返回原来的目录
40. wmic 高级查询
功能
使用WMI查询更复杂的信息,例如获取BIOS信息、磁盘分区详情等。
实例
@echo off
wmic bios get serialnumber
wmic diskdrive get size,model
41. netsh 网络配置
功能
netsh 是一个强大的网络配置工具,可用于配置网络接口、防火墙规则等。
实例
@echo off
:: 添加防火墙规则允许SSH服务
netsh advfirewall firewall add rule name="Allow SSH" dir=in action=allow protocol=TCP localport=22
42. sc 服务控制
功能
管理Windows服务,如启动、停止、配置服务等。
实例
@echo off
:: 启动 MySQL 服务
sc start MySQL
:: 停止 MySQL 服务
sc stop MySQL
:: 设置 MySQL 服务开机自动启动
sc config MySQL start= auto
43. bcdboot 引导加载程序安装
功能
复制引导文件到系统分区,并创建必要的BCD存储项。
实例
@echo off
bcdboot C:\Windows /s S:
44. icacls 访问控制列表管理
功能
用于查看和修改文件或目录的安全权限。
实例
@echo off
:: 授予 Everyone 完全控制权限
icacls "C:\Folder" /grant Everyone:F /T
:: 撤销 Everyone 的权限
icacls "C:\Folder" /remove Everyone /T
45. xcacls 扩展访问控制列表管理
功能
类似于icacls,但提供了更多的选项来管理ACL(访问控制列表)。
实例
@echo off
:: 授予用户完全控制权限
xcacls "C:\Folder" /G "User:Full"
:: 撤销用户的权限
xcacls "C:\Folder" /R "User"
46. subst 创建虚拟驱动器映射
功能
将路径映射为虚拟驱动器,方便长路径的访问。
实例
@echo off
subst Z: C:\Very\Long\Path
47. eventcreate 创建事件日志条目
功能
向Windows事件日志中添加自定义条目。
实例
@echo off
eventcreate /T INFORMATION /ID 100 /L APPLICATION /SO MyApp /D "This is a custom log entry."
48. tasklist 显示进程列表
功能
列出当前运行的所有进程及其相关信息。
实例
@echo off
tasklist | findstr notepad
49. qprocess 查询进程信息
功能
显示有关远程或本地计算机上的指定进程的信息。
实例
@echo off
qprocess notepad.exe
50. dism 部署映像服务和管理工具
功能
用于维护Windows映像文件(WIM)、安装包、驱动程序等。
实例
@echo off
:: 检查系统文件的完整性并修复损坏的文件
dism /Online /Cleanup-Image /RestoreHealth
51. sfc 系统文件检查器
功能
扫描并修复受保护的操作系统文件中的错误。
实例
@echo off
:: 执行系统文件检查
sfc /scannow
52. dsquery, dsget, dsmod Active Directory 工具
功能
这些命令用于查询、获取和修改Active Directory对象。
实例
@echo off
:: 查询所有用户账户
dsquery user
:: 获取特定用户的详细信息
dsget user "CN=John Doe,CN=Users,DC=example,DC=com" -samid -email
53. netdom 网络域管理
功能
用于管理网络域资源,如加入或离开域、重命名计算机等。
实例
@echo off
:: 将计算机加入域
netdom join %computername% /domain:example.com /userd:admin /passwordd:pass /reboot
54. nltest 网络登录测试
功能
测试与域控制器的连接,并验证身份验证设置。
实例
@echo off
:: 测试到指定域控制器的连接
nltest /dsgetdc:example.com
55. rsop.msc 结果集策略管理控制台
功能
显示应用在计算机上的组策略设置。
实例
@echo off
start rsop.msc
56. gpresult 组策略结果
功能
显示当前计算机和用户的应用组策略信息。
实例
@echo off
gpresult /r
57. regini 注册表初始化
功能
用于批量更新注册表项,常用于部署环境中。
实例
@echo off
regini regfile.reg
58. vssadmin 卷影复制服务管理
功能
管理和控制卷影复制服务(VSS),可以用来创建快照、删除快照等。
实例
@echo off
:: 列出所有卷影副本
vssadmin list shadows
59. bitsadmin Background Intelligent Transfer Service 管理
功能
用于管理后台智能传输服务任务,可以在低带宽情况下高效传输大文件。
实例
@echo off
bitsadmin /transfer myDownloadJob /download /priority normal http://example.com/file.zip C:\Temp\file.zip
60. winsat Windows 体验索引评估
功能
评估计算机的性能,并生成Windows体验索引分数。
实例
@echo off
winsat formal
61. wevtutil 事件日志实用工具
功能
管理和查询Windows事件日志。
实例
@echo off
:: 导出应用程序日志
wevtutil epl Application applog.evtx
62. quser 查询用户会话
功能
列出远程或本地计算机上的活动用户会话。
实例
@echo off
quser
63. qwinsta 查询终端服务会话
功能
类似于quser,但是专门用于查询终端服务会话。
实例
@echo off
qwinsta
64. rasdial 远程访问拨号连接
功能
用于建立、断开和管理远程访问拨号连接。
实例
@echo off
rasdial "My Dial-up Connection" username password
65. rasphone 远程访问电话簿管理
功能
管理远程访问电话簿条目。
实例
@echo off
rasphone -d "My Dial-up Connection"
66. net use 网络驱动器映射
功能
映射网络驱动器或断开网络驱动器连接。
实例
@echo off
net use Z: \\server\share /persistent:yes
67. net view 网络资源查看
功能
查看网络上的共享资源。
实例
@echo off
net view \\server
68. net config 网络配置
功能
配置各种网络服务和设置。
实例
@echo off
net config server /autodisconnect:never
69. net start 和 net stop 启动/停止服务
功能
启动或停止Windows服务。
实例
@echo off
net start "Print Spooler"
net stop "Print Spooler"
70. net share 共享管理
功能
创建、查看或删除网络共享。
实例
@echo off
net share MyShare=C:\SharedFolder /grant:Everyone,FULL
71. net statistics 网络统计
功能
显示各种网络服务的统计数据。
实例
@echo off
net statistics workstation
72. net accounts 用户账户设置
功能
配置用户账户的密码策略和其他设置。
实例
@echo off
net accounts /minpwlen:8 /maxpwage:90 /minpwage:1
73. net group 管理全局组
功能
添加或移除用户到全局组中。
实例
@echo off
net group "Domain Admins" username /add
74. net localgroup 管理本地组
功能
添加或移除用户到本地组中。
实例
@echo off
net localgroup Administrators username /add
75. net user 用户管理
功能
创建、修改或删除用户账户。
实例
@echo off
net user newuser password /add
76. net password 更改密码
功能
更改用户密码。
实例
@echo off
net password
77. net print 打印队列管理
功能
管理打印队列,如暂停、继续、清除打印作业等。
实例
@echo off
net print \\server\printer pause
78. net time 设置时间
功能
同步计算机的时间与网络时间服务器。
实例
@echo off
net time \\server /set /y
79. net file 文件管理
功能
列出打开的文件或关闭远程文件。
实例
@echo off
net file
80. net config workstation 配置工作站
功能
配置工作站的各种参数。
实例
@echo off
net config workstation /workgroup:WORKGROUP
81. net session 会话管理
功能
查看和断开会话。
实例
@echo off
net session
82. net helpmsg 查看帮助消息
功能
查看特定错误代码的帮助信息。
实例
@echo off
net helpmsg 2250
83. nbtstat NetBIOS over TCP/IP 状态
功能
显示NetBIOS协议的状态信息。
实例
@echo off
nbtstat -c
84. arp 地址解析协议
功能
显示和修改ARP缓存表。
实例
@echo off
arp -a
85. route 路由表管理
功能
显示和修改路由表。
实例
@echo off
route print
86. tracert 跟踪路由
功能
跟踪从本地计算机到目标主机的路径。
实例
@echo off
tracert example.com
87. ping 网络可达性测试
功能
测试网络连接的可达性和延迟。
实例
@echo off
ping example.com更多推荐



所有评论(0)