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 command
  • for /L %%variable in (start,step,end) do command
  • for /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=value
  • setlocal
  • endlocal
实例
@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.txt
  • findstr /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:MM
  • schtasks /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 diskselect disk Xcleancreate partition primaryformat 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: path
  • subst 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开始,curlwget 命令被内置支持,可以用来进行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. dsquerydsgetdsmod 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
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐