Board logo

标题: 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秒写入记录
  1. 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
可以用批处理延迟应该就没事了
  1. :top
  2. netstat -an |findstr :210  >210.txt
  3. REM 延迟参数单位 ms, 例如延迟5000ms 就如下所示
  4. call :delay 5000
  5. goto top
  6. exit /b
  7. :delay
  8. if "%1"=="" goto :eof
  9. set DelayTime=%1
  10. set TotalTime=0
  11. set NowTime=%time%
  12. set /a newminute=1%NowTime:~3,2%-100
  13. set /a newsecond=1%NowTime:~-5,2%%NowTime:~-2%0-100000
  14. REM 读取起始时间,时间格式为:13:01:05.95
  15. :delay_continue
  16. set /a oldminute=newminute
  17. set /a oldsecond=newsecond
  18. set NowTime=%time%
  19. set /a newminute=1%NowTime:~3,2%-100
  20. set /a newsecond=1%NowTime:~-5,2%%NowTime:~-2%0-100000
  21. set /a TotalTime+=(%newminute%-%oldminute%+60)%%60*60000+%newsecond%-%oldsecond%
  22. if %TotalTime% lss %DelayTime% goto delay_continue
  23. 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
  1. 0<1/*,:
  2. @echo off
  3. :top
  4. netstat -an |findstr :210  >210.txt
  5. REM 延迟参数单位 ms, 例如延迟5000ms 就如下所示
  6. %windir%\system32\CScript.exe -e:jscript -nologo %0 5000
  7. goto top
  8. exit /b
  9. */;
  10. WScript.Sleep(+WScript.Arguments(0));
  11. 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