今天在测试bat脚本的时候,有一句是将一个值输入到nul中。nul
在批处理中中代表着空设备,输出到nul
中则意味着屏蔽掉输出内容。
但是在运行脚本的时候,这个操作会报错系统找不到指定文件
。如果出现这个操作,证明系统中的c:/Window/System32/drivers/null.sys
文件不可用或者不存在。git bash的闪退也是因为这个原因。
一步步排查问题:
- 检查文件是否存在
在c:/Window/System32/drivers
目录下如果不存在null.sys
文件,跳到第4步。
存在则继续第2步。 - 管理员身份运行cmd
- 查询服务null状态
sc query null
可以看到服务的状态为停止状态。
- 尝试重新启动
sc start null
[SC] StartService 失败 577:
Windows 无法验证此文件的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。
这一步的提示就证明null文件不可用,去下载可用的null.sys
文件覆盖之前的文件。
- 重新启动服务
sc start null
启动成功。
再次去cmd中echo 1>nul
,不再报错。