菜鸟科技网

日志dos命令有哪些常用操作?

  1. 查看日志内容:直接读取并显示日志文件中的信息。
  2. 系统事件查看:查看和管理 Windows 系统本身生成的事件日志(如应用程序、安全、系统日志等)。

下面我将分这两大部分进行介绍,并提供实用的示例。

日志dos命令有哪些常用操作?-图1
(图片来源网络,侵删)

第一部分:查看和管理文本日志文件

这部分命令适用于任何纯文本格式的日志文件(.log, .txt 文件)。

type - 显示文件内容

这是最简单、最直接的命令,用于在控制台中显示整个文件的内容。

语法:

type [驱动器:][路径]文件名

示例: 假设你有一个名为 app.log 的日志文件,位于 C:\logs 目录下。

日志dos命令有哪些常用操作?-图2
(图片来源网络,侵删)
# 显示 C:\logs\app.log 文件的全部内容
type C:\logs\app.log

优点:

  • 简单直接,无需任何参数。
  • 是所有 Windows 系统都内置的命令。

缺点:

  • 如果日志文件很大,内容会飞速滚过屏幕,你只能看到最后的内容。
  • 无法进行搜索或过滤。

more - 分页显示内容

type 显示的内容太多时,more 命令可以将其分页显示,让你一屏一屏地阅读。

语法:

日志dos命令有哪些常用操作?-图3
(图片来源网络,侵删)
type [文件名] | more

这里的 是“管道”符号,它将 type 命令的输出作为 more 命令的输入。

示例:

# 分页显示 C:\logs\app.log 的内容
type C:\logs\app.log | more

操作方法:

  • 按空格键:显示下一页。
  • 按回车键:显示下一行。
  • Q 键:退出 more 命令,返回到命令提示符。

find - 查找特定字符串

find 命令用于在文件中查找包含指定字符串的行。

语法:

find [/i] [/c] [/n] "字符串" [驱动器:][路径]文件名

常用参数:

  • /i:忽略大小写。(非常常用)
  • /c:仅显示包含字符串的行数,而不是显示具体的行。
  • /n:显示行号。

示例: 假设你想在 app.log 中查找所有包含 "ERROR" 的日志。

# 查找包含 "ERROR" 的行,并显示行号
find /n "ERROR" C:\logs\app.log
# 忽略大小写查找 "error"
find /i "error" C:\logs\app.log
# 统计 "ERROR" 出现了多少次
find /c "ERROR" C:\logs\app.log

findstr - 更强大的查找

findstrfind 的增强版,支持正则表达式,功能更强大。

语法:

findstr [/i] [/c:"字符串"] [/n] [/r] "搜索字符串" [文件名...]

常用参数:

  • /i:忽略大小写。
  • /c:"字符串":将 "字符串" 视为要查找的文本(而不是文件名),当要查找的字符串中包含空格时,必须使用此参数。
  • /n:显示行号。
  • /r:使用正则表达式。

示例:

# 查找包含 "ERROR" 或 "Warning" 的行(使用正则表达式)
findstr /i /n "ERROR|Warning" C:\logs\app.log
# 查找包含 "Failed to connect" 的行
findstr /i /c:"Failed to connect" C:\logs\app.log

findstr 的正则表达式元字符:

  • :任意单个字符
  • :零次或多次重复前一个字符
  • ^ :行的开始
  • :行的结束
  • [class] :字符类,[0-9] 表示任意数字
  • [^class] :非字符类,[^a-z] 表示非小写字母
  • [x-y] :范围,[A-Z] 表示任意大写字母
  • \x :转义元字符,\. 表示查找点号

grep - (需安装) Linux 风格的查找

很多开发者习惯使用 Linux/Unix 中的 grep 命令,Windows 自身不包含,但你可以通过以下方式获得:

  • 安装 Git for Windows:安装后,其 bin 目录下的 grep.exe 就可以在 CMD 中使用。
  • 安装 Windows Subsystem for Linux (WSL):在 WSL 中可以直接使用 grep

grep 的用法和 findstr 非常相似,但语法更符合 Linux 习惯。

示例:

# 使用 Git 安装的 grep
grep -i "error" C:\logs\app.log
grep -n "error\|warning" C:\logs\app.log

第二部分:查看和管理 Windows 事件日志

Windows 系统本身的事件日志(如应用程序、安全、系统日志)不是普通的文本文件,需要使用专门的命令行工具来查看。

wevtutil - 功能强大的事件查看器命令行工具

这是查看 Windows 事件日志最推荐的命令行工具,功能全面。

常用语法:

# 查询事件
wevtutil qe [日志名称] /q:查询XML /c:数量 /rd:反向 /f:文本格式
# 列出所有日志
wevtutil el
# 导出日志到文件
wevtutil epl [日志名称] [输出文件路径]

日志名称:

  • Application:应用程序日志
  • Security:安全日志
  • System:系统日志
  • Setup:安装程序日志

示例:

# 列出所有可用的日志
wevtutil el
# 查询最近10条系统日志,并以文本格式显示
wevtutil qe System /c:10 /f:text
# 查询所有来源为 "Disk" 的应用程序错误事件
wevtutil qe Application /q:"*[System[(EventID=1001)] and *[System[Provider[@Name='Disk']]]]" /f:text
# 将安全日志导出到 C:\logs\security.evtx 文件
wevtutil epl Security C:\logs\security.evtx

查询XML语法: /q: 后面跟的是 XPath 查询语句,语法比较复杂,但非常精确。

  • *[System[EventID=1001]]:事件ID为1001的所有事件。
  • *[System[Level=2]]:级别为2(通常是错误)的所有事件。
  • *[System[TimeCreated[@SystemTime>'2025-10-26T00:00:00']]]:某个时间点之后创建的事件。

eventcreate - 创建自定义事件日志

这个命令允许你以管理员身份,向本地或远程计算机的事件日志中添加一条自定义记录,这对于脚本调试和记录非常有用。

语法:

eventcreate /ID [事件ID] /L [日志名称] /T [类型] /SO [来源] /D "描述"

参数:

  • /ID:事件ID(1-1000)。
  • /L:日志名称(APPLICATION, SECURITY, SYSTEM)。
  • /T:事件类型(ERROR, WARNING, INFO)。
  • /SO:事件的来源(你的脚本名或应用程序名)。
  • /D:事件的详细描述。

示例: (需要以管理员身份运行 CMD)

# 在应用程序日志中创建一条来源为 "MyScript" 的信息记录
eventcreate /ID 777 /L APPLICATION /T INFO /SO MyScript /D "This is a test message from my script."
# 在系统日志中创建一条警告记录
eventcreate /ID 100 /L SYSTEM /T WARNING /SO "MyCustomApp" /D "A non-critical issue has occurred."

第三部分:使用 PowerShell (更现代的选择)

对于现代 Windows 系统,PowerShell 是比 CMD 更强大、更灵活的工具,尤其是在处理日志方面。

Get-Content (别名 cat, gc) - 读取文件

类似于 type,但功能更强大。

# 实时监控日志文件的变化(类似 tail -f)
Get-Content C:\logs\app.log -Wait -Tail 10

Select-String (别名 sls) - 查找字符串

类似于 findstr,但使用的是 PowerShell 的管道和对象,更易于与其他命令结合。

# 查找包含 "ERROR" 的行,并只显示行号和内容
Select-String -Path "C:\logs\app.log" -Pattern "ERROR" -SimpleMatch | Format-List LineNumber, Line
# 忽略大小写查找
Select-String -Path "C:\logs\app.log" -Pattern "error" -CaseSensitive:$false

Get-WinEvent - 查看 Windows 事件日志

这是 PowerShell 中查看事件日志的核心命令,比 wevtutil 更易于在脚本中使用。

# 获取最近100条系统日志
Get-WinEvent -LogName System -MaxEvents 100
# 筛选特定ID的事件
Get-WinEvent -LogName Application -FilterXPath "*[System[EventID=1001]]"
# 将日志导出到CSV文件
Get-WinEvent -LogName Security | Export-Csv -Path "C:\logs\security.csv" -NoTypeInformation

总结与建议

场景 推荐命令 优点
快速查看小日志文件 type filename.log 最简单,无需记忆参数
分页查看大日志文件 type filename.log \| more 刷屏
在日志中查找关键词 findstr /i "keyword" filename.log 功能强大,支持正则
监控日志文件实时变化 Get-Content filename.log -Wait (PowerShell) 实时跟踪,非常实用
查看 Windows 系统事件 wevtutil qe System /c:10 (CMD) 功能全面,无需额外工具
脚本化处理系统事件 Get-WinEvent -LogName System (PowerShell) 输出为对象,易于处理
在脚本中记录日志 eventcreate ... (CMD) 可向系统日志写入记录

给你的建议:

  • 日常快速查看:优先使用 typefindstr,它们是 CMD 的内置利器。
  • 需要实时监控:强烈推荐使用 PowerShell 的 Get-Content -Wait
  • 系统故障排查wevtutilGet-WinEvent 是你的主力军,Get-WinEvent 在自动化和脚本化方面更具优势。
  • 从 CMD 迁移:如果你熟悉 Linux/Unix,安装 Git for Windows 使用 grep 会让你感觉更亲切,长远来看,学习 PowerShell 对 Windows 系统管理大有裨益。
分享:
扫描分享到社交APP
上一篇
下一篇