标题: 20元求解决!dll初始化失败,不能关机 [打印本页]
作者: zrf0123 时间: 2018-10-1 09:12 标题: 20元求解决!dll初始化失败,不能关机
循环使用某些命令,如 ping.exe netstat.exe findstr .exe时,关机容易出现“dll初始化失败”,不能关机,把dll重新注册一下就好,但下次关机又会出现这种问题。而且注册时间太长, 是否有基本的解决办法?请大咖帮忙解决下,非常感谢!
应用系统:windows2003sever windows server2008r2
作者: Batcher 时间: 2018-10-1 09:15
完整代码发出来看看你是怎样循环使用的,也许可以优化一下。
作者: zrf0123 时间: 2018-10-1 09:37
常用循环,如:
:top
@ping -n 2 127.0>nul
netstat -an |findstr :210 >210.txt
@ping -n 4 127.0>nul
goto top
作者: zaqmlp 时间: 2018-10-1 09:53
如果注册dll后不再运行这些命令,关机就不会弹出错误提示框吗?
作者: zrf0123 时间: 2018-10-1 12:02
本帖最后由 zrf0123 于 2018-10-1 12:06 编辑
回复 4# zaqmlp
即使注册过,在运行命令的情况下,有的系统能够关机 有的系统仍然关机不正常
作者: zaqmlp 时间: 2018-10-1 12:33
回复 5# zrf0123
不是,我是问注册dll后不再运行你的bat,是不是就不会有这个问题?得先找出是什么导致这个问题的
作者: flashercs 时间: 2018-10-1 13:28
延迟可以不用ping而使用netstat自身的间隔功能。试试结果!
例如 间隔5秒写入记录- netstat -an 5|find “:210”>210.txt
复制代码
作者: zrf0123 时间: 2018-10-2 09:48
回复 6# zaqmlp
只要不运行bat,关机重启都正常
作者: Batcher 时间: 2018-10-2 10:03
回复 3# zrf0123
用其它命令代替ping延时可以吗?例如:timeout
作者: zrf0123 时间: 2018-10-2 10:33
回复 7# flashercs
这样的内循环是可以正常关机的,但是需要外循环...
作者: zrf0123 时间: 2018-10-2 11:15
回复 9# Batcher
用其他命令代替ping延时,如pathping、choice、timeout均无法关机,如用timeout会循环提示:
timeout.exe -dll初始化失败 netstat.exe -dll 初始化失败 findstr -dll 初始化失败
而且此时任务管理器中已无相应进程,但无法关机或重启机器
作者: Batcher 时间: 2018-10-2 11:18
这种死循环的代码执行时间长了之后cmd进程占用的CPU和内存是否会比较大?
关机之前手工把cmd进程结束掉,再关机还会报错吗?
作者: zrf0123 时间: 2018-10-2 11:23
回复 12# Batcher
连续工作24小时是没问题的,在重启前把cmd结束掉的话可以正常关机
作者: flashercs 时间: 2018-10-2 11:54
本帖最后由 flashercs 于 2018-10-2 11:58 编辑
回复 13# zrf0123
可以用批处理延迟应该就没事了- :top
- netstat -an |findstr :210 >210.txt
- REM 延迟参数单位 ms, 例如延迟5000ms 就如下所示
- call :delay 5000
- goto top
- exit /b
-
- :delay
- if "%1"=="" goto :eof
- set DelayTime=%1
- set TotalTime=0
- set NowTime=%time%
- set /a newminute=1%NowTime:~3,2%-100
- set /a newsecond=1%NowTime:~-5,2%%NowTime:~-2%0-100000
- REM 读取起始时间,时间格式为:13:01:05.95
- :delay_continue
- set /a oldminute=newminute
- set /a oldsecond=newsecond
- set NowTime=%time%
- set /a newminute=1%NowTime:~3,2%-100
- set /a newsecond=1%NowTime:~-5,2%%NowTime:~-2%0-100000
- set /a TotalTime+=(%newminute%-%oldminute%+60)%%60*60000+%newsecond%-%oldsecond%
- if %TotalTime% lss %DelayTime% goto delay_continue
- goto :eof
复制代码
作者: zrf0123 时间: 2018-10-2 13:33
回复 14# flashercs
测试了一次,尽管有提示但能关机,但太吃cpu了,占了我e3半个核!
求比较节能的方法!
作者: flashercs 时间: 2018-10-2 13:51
本帖最后由 flashercs 于 2018-10-2 14:14 编辑
回复 15# zrf0123 - 0<1/*,:
- @echo off
- :top
- netstat -an |findstr :210 >210.txt
- REM 延迟参数单位 ms, 例如延迟5000ms 就如下所示
- %windir%\system32\CScript.exe -e:jscript -nologo %0 5000
- goto top
- exit /b
- */;
- WScript.Sleep(+WScript.Arguments(0));
- WScript.Quit(0);
复制代码
PS:自动关闭为响应的程序可以尝试修改注册表,server 2003/2008 确认一下是否有相关键值,若有键值,请修改后试试结果;若没有键值,就不要修改了。
https://jingyan.baidu.com/article/f3e34a1295b6a7f5eb653525.html
作者: zrf0123 时间: 2018-10-3 12:12
回复 16# flashercs
经测试不可,仍提示 ..初始化失败...
到底怎么回事?
作者: flashercs 时间: 2018-10-3 15:21
回复 17# zrf0123
有个程序运行后可以直接断电,没有关机过程,但是对硬盘有影响,可能会有数据丢失,如果机器的数据不重要的话可以提供给你。无盘服务器使用最好了。
若不行,那只能用Windows的计划任务了,添加计划任务每隔5秒钟运行一次命令netstat -an|findstr :210>210.txt
作者: Batcher 时间: 2018-10-4 09:31
回复 13# zrf0123
设置一下关机脚本,先把cmd进程杀掉再关机可以吗?
作者: zrf0123 时间: 2018-10-6 10:55
回复 19# Batcher
先把cmd进程杀掉再关机是可以的,只是要修改系统,有点麻烦
作者: zrf0123 时间: 2018-10-6 10:56
回复 18# flashercs
增加硬盘风险不太好啊
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |